JVM crash in RootsClosure

Solution Verified - Updated -

Issue

  • An application making heavy use of JNI code crashes when gc code iterates over JNI handles due to an address that does not exist in the application address space.
  • Shenandoah GC:
Stack: [0x00007f9a983e4000,0x00007f9a984e4000],  sp=0x00007f9a984e2b90,  free space=1018k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xd56be4]  ShenandoahInitMarkRootsClosure<(UpdateRefsMode)0>::do_oop(oopDesc**)+0x34
V  [libjvm.so+0x94c826]  JNIHandles::oops_do(OopClosure*)+0x86
V  [libjvm.so+0xd91fd3]  ShenandoahSerialRoot::oops_do(OopClosure*, unsigned int)+0x83
V  [libjvm.so+0xd6e30c]  ShenandoahRootScanner<ShenandoahAllCodeRootsIterator>::roots_do(unsigned int, OopClosure*, CLDClosure*, CodeBlobClosure*, ThreadClosure*)+0xbc
V  [libjvm.so+0xd6e53d]  ShenandoahInitMarkRootsTask<(UpdateRefsMode)0>::work(unsigned int)+0x12d
V  [libjvm.so+0xefa38d]  GangWorker::loop()+0x5d
V  [libjvm.so+0xe6680c]  Thread::call_run()+0x15c
V  [libjvm.so+0xc1cc86]  thread_native_entry(Thread*)+0xf6
  • Parallel GC:
Stack: [0x00007f73a4785000,0x00007f73a4885000],  sp=0x00007f73a4883bb0,  free space=1018k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xc9454e]  oopDesc* PSPromotionManager::copy_to_survivor_space<false>(oopDesc*)+0x14e
V  [libjvm.so+0xc987bc]  PSRootsClosure<false>::do_oop(oopDesc**)+0x6c
V  [libjvm.so+0x94a706]  JNIHandles::oops_do(OopClosure*)+0x86
V  [libjvm.so+0xc98bb9]  ScavengeRootsTask::do_it(GCTaskManager*, unsigned int)+0x109
V  [libjvm.so+0x7f5a49]  GCTaskThread::run()+0x209
V  [libjvm.so+0xe58818]  Thread::call_run()+0x158
V  [libjvm.so+0xc11926]  thread_native_entry(Thread*)+0xe6

Environment

  • OpenJDK

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content