Java crash with Shenandoah collector in MetadataOnStackMark::~MetadataOnStackMark

Solution Verified - Updated -

Issue

  • Tomcat application crashing regularly every ~12 days.
  • Core backtrace current thread:
#0  0x00007fad932c44f5 in ?? () from /lib64/libc.so.6
#1  0x00007fad932c5cd5 in abort () at abort.c:103
#2  0x00007fad92b3c7d5 in os::abort (dump_core=true) at /usr/src/debug/java-1.8.0-openjdk-1.8.0.275.b01-0.el6_10.x86_64/openjdk/hotspot/src/os/linux/vm/os_linux.cpp:1572
#3  0x00007fad92d4c2b3 in VMError::report_and_die (this=0x7fad7c7fcfe0) at /usr/src/debug/java-1.8.0-openjdk-1.8.0.275.b01-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/utilities/vmError.cpp:1112
#4  0x00007fad92b43292 in JVM_handle_linux_signal (sig=11, info=0x7fad7c7fd1f0, ucVoid=0x7fad7c7fd0c0, abort_if_unrecognized=2088750944)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.275.b01-0.el6_10.x86_64/openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp:541
#5  0x00007fad92b38363 in signalHandler (sig=11, info=0x7fad7c7fd1f0, uc=0x7fad7c7fd0c0) at /usr/src/debug/java-1.8.0-openjdk-1.8.0.275.b01-0.el6_10.x86_64/openjdk/hotspot/src/os/linux/vm/os_linux.cpp:4591
#6  <signal handler called>
#7  0x00007fad92aada6a in MetadataOnStackMark::~MetadataOnStackMark (this=<value optimized out>, __in_chrg=<value optimized out>)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.275.b01-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/classfile/metadataOnStackMark.cpp:72
#8  0x00007fad92c34075 in ShenandoahHeap::unload_classes_and_cleanup_tables (this=0x7fad8c05c930, full_gc=false)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.275.b01-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahHeap.cpp:1924
#9  0x00007fad92c0ac56 in ShenandoahConcurrentMark::finish_mark_from_roots (this=0x7fad8c05d6c0, full_gc=false)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.275.b01-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahConcurrentMark.cpp:501
#10 0x00007fad92c3ba03 in ShenandoahHeap::op_final_mark (this=<value optimized out>)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.275.b01-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahHeap.cpp:1435
#11 0x00007fad92c3c137 in ShenandoahHeap::entry_final_mark (this=0x7fad8c05c930)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.275.b01-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahHeap.cpp:2395
#12 0x00007fad92c60ed9 in VM_ShenandoahFinalMarkStartEvac::doit (this=<value optimized out>)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.275.b01-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahVMOperations.cpp:56
#13 0x00007fad92d556f2 in VM_Operation::evaluate (this=0x7fad90602a80) at /usr/src/debug/java-1.8.0-openjdk-1.8.0.275.b01-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/runtime/vm_operations.cpp:61
#14 0x00007fad92d5303f in VMThread::evaluate_operation (this=<value optimized out>, op=0x7fad90602a80)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.275.b01-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/runtime/vmThread.cpp:396
#15 0x00007fad92d5431e in VMThread::loop (this=0x7fad8c12f800) at /usr/src/debug/java-1.8.0-openjdk-1.8.0.275.b01-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/runtime/vmThread.cpp:512
#16 0x00007fad92d547d3 in VMThread::run (this=0x7fad8c12f800) at /usr/src/debug/java-1.8.0-openjdk-1.8.0.275.b01-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/runtime/vmThread.cpp:279
#17 0x00007fad92b3f162 in java_start (thread=0x7fad8c12f800) at /usr/src/debug/java-1.8.0-openjdk-1.8.0.275.b01-0.el6_10.x86_64/openjdk/hotspot/src/os/linux/vm/os_linux.cpp:847
#18 0x00007fad93c56aa1 in start_thread (arg=0x7fad7c7ff700) at pthread_create.c:301
#19 0x00007fad9337ac4d in lseek64 () at ../sysdeps/unix/syscall-template.S:84
#20 0x0000000000000000 in ?? ()
  • Crash within this frame:
#7  0x00007fad92aada6a in MetadataOnStackMark::~MetadataOnStackMark (this=<value optimized out>, __in_chrg=<value optimized out>)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.275.b01-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/classfile/metadataOnStackMark.cpp:72
72        md->set_on_stack(false);
  • metadataOnStackMark.cpp:72:
67    while (buffer != NULL) {
68      // Clear on stack state for all metadata.
69      size_t size = buffer->size();
70      for (size_t i  = 0; i < size; i++) {
71        Metadata* md = buffer->at(i);
72        md->set_on_stack(false);
73      }
74  
75      MetadataOnStackBuffer* next = buffer->next_used();
76  

Environment

  • Red Hat Enterprise Linux (RHEL) 6.10 X86_64
  • Red Hat build of OpenJDK 1.8.0_275-b01
  • Shenandoah garbage collector

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