JVM crash in RootsClosure
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.