JDK-8345293 : Fix generational Shenandoah with compact headers
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 24
  • Priority: P3
  • Status: New
  • Resolution: Unresolved
  • Submitted: 2024-12-02
  • Updated: 2024-12-02
Related Reports
Relates :  
Description
Running generational Shenandoah together with compact object headers currently results in crashes and asserts. E.g.:

make test TEST=gc/stress/gcold/TestGCOldWithShenandoah.java  TEST_VM_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseCompactObjectHeaders"

#  Internal Error (/home/ubuntu/src/openjdk/jdk/src/hotspot/share/oops/markWord.hpp:224), pid=1426935, tid=1426952
#  assert(!UseObjectMonitorTable) failed: Lightweight locking with OM table does not use markWord for monitors

Stack: [0x00007c25add5b000,0x00007c25ade5b000],  sp=0x00007c25ade59950,  free space=1018k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xb5cdd5]  markWord::monitor() const+0xad  (markWord.hpp:224)
V  [libjvm.so+0x164a6d2]  ShenandoahHeap::get_object_age(oopDesc*)+0xa2  (shenandoahHeap.inline.hpp:336)
V  [libjvm.so+0x169d79d]  void ShenandoahMark::count_liveness<(ShenandoahGenerationType)2>(unsigned short*, oopDesc*, unsigned int)+0x179  (shenandoahMark.inline.hpp:122)
V  [libjvm.so+0x1699f4c]  void ShenandoahMark::do_task<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)2>, (ShenandoahGenerationType)2, (StringDedupMode)0>(Padded<BufferedOverflowTaskQueue<ShenandoahMarkTask, (MemTag)5, 131072u>, 128ul>*, ShenandoahMarkRefsClosure<(ShenandoahGenerationType)2>*, unsigned short*, StringDedup::Requests*, ShenandoahMarkTask*, unsigned int)+0x1f8  (shenandoahMark.inline.hpp:102)
V  [libjvm.so+0x168b7d3]  void ShenandoahMark::mark_loop_work<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)2>, (ShenandoahGenerationType)2, true, (StringDedupMode)0>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)2>*, unsigned short*, unsigned int, TaskTerminator*, StringDedup::Requests*)+0x449  (shenandoahMark.cpp:197)
V  [libjvm.so+0x168926f]  void ShenandoahMark::mark_loop_prework<(ShenandoahGenerationType)2, true, (StringDedupMode)0>(unsigned int, TaskTerminator*, ShenandoahReferenceProcessor*, StringDedup::Requests*, bool)+0x107  (shenandoahMark.cpp:75)
V  [libjvm.so+0x1688ac8]  void ShenandoahMark::mark_loop<true, (StringDedupMode)0>(unsigned int, TaskTerminator*, ShenandoahReferenceProcessor*, ShenandoahGenerationType, StringDedup::Requests*)+0x8a  (shenandoahMark.cpp:87)
V  [libjvm.so+0x16871a2]  ShenandoahMark::mark_loop(unsigned int, TaskTerminator*, ShenandoahReferenceProcessor*, ShenandoahGenerationType, bool, StringDedupMode, StringDedup::Requests*)+0x72  (shenandoahMark.cpp:110)
V  [libjvm.so+0x1616821]  ShenandoahConcurrentMarkingTask<(ShenandoahGenerationType)2>::work(unsigned int)+0x15f  (shenandoahConcurrentMark.cpp:72)
V  [libjvm.so+0x19ca21a]  WorkerTaskDispatcher::worker_run_task()+0x84  (workerThread.cpp:70)
V  [libjvm.so+0x19ca938]  WorkerThread::run()+0x34  (workerThread.cpp:201)
V  [libjvm.so+0x18601d5]  Thread::call_run()+0x1bd  (thread.cpp:232)
V  [libjvm.so+0x1497a28]  thread_native_entry(Thread*)+0x1cf  (os_linux.cpp:849)
C  [libc.so.6+0x9ca94]

Comments
A pull request was submitted for review. Branch: master URL: https://git.openjdk.org/jdk/pull/22477 Date: 2024-12-02 11:09:37 +0000
02-12-2024