Java crash in GCTaskThread while Shenandoah collector concurrent marking

Solution Verified - Updated -

Issue

Java application with Shenandoah GC crashes when executing GCTaskThread with the following in the fatal error log (RHEL7):

#  SIGSEGV (0xb) at pc=0x00007f90f122912d, pid=19906, tid=0x00007f90ee71e700
#
# JRE version: OpenJDK Runtime Environment (8.0_262-b10) (build 1.8.0_262-b10)
# Java VM: OpenJDK 64-Bit Server VM (25.262-b10 mixed mode linux-amd64 )
# Problematic frame:
# V  [libjvm.so+0xa2e12d]  void ShenandoahConcurrentMark::mark_loop_work<ShenandoahMarkRefsClosure, true>(ShenandoahMarkRefsClosure*, unsigned short*, unsigned int, ShenandoahTaskTerminator*)+0x19d
...
Current thread (0x00007f90e8060000):  GCTaskThread [stack: 0x00007f90ee61f000,0x00007f90ee71f000] [id=19908]

siginfo: si_signo: 11 (SIGSEGV), si_code: 128 (SI_KERNEL), si_addr: 0x0000000000000000

Stack: [0x00007f90ee61f000,0x00007f90ee71f000],  sp=0x00007f90ee71dba0,  free space=1018k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xa2e12d]  void ShenandoahConcurrentMark::mark_loop_work<ShenandoahMarkRefsClosure, true>(ShenandoahMarkRefsClosure*, unsigned short*, unsigned int, ShenandoahTaskTerminator*)+0x19d
V  [libjvm.so+0xa36c59]  void ShenandoahConcurrentMark::mark_loop_prework<true>(unsigned int, ShenandoahTaskTerminator*, ReferenceProcessor*, bool)+0x209
V  [libjvm.so+0xa36fd4]  ShenandoahConcurrentMarkingTask::work(unsigned int)+0xd4
V  [libjvm.so+0xb7398a]  GangWorker::loop()+0xca
V  [libjvm.so+0x93a382]  java_start(Thread*)+0xf2

Java application crashes with the following in the fatal error log (RHEL6):

#  SIGSEGV (0xb) at pc=0x00007f32900f8a10, pid=10797, tid=0x00007f328dae5700
#
# JRE version: OpenJDK Runtime Environment (8.0_262-b10) (build 1.8.0_262-b10)
# Java VM: OpenJDK 64-Bit Server VM (25.262-b10 mixed mode linux-amd64 )
# Problematic frame:
# V  [libjvm.so+0xa41a10]
...
Current thread (0x00007f3288064040):  GCTaskThread [stack: 0x00007f328d9e5000,0x00007f328dae6000] [id=10828]
...
Stack: [0x00007f328d9e5000,0x00007f328dae6000],  sp=0x00007f328dae4780,  free space=1021k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xa41a10]
V  [libjvm.so+0xa47cb7]
V  [libjvm.so+0xa553c8]
V  [libjvm.so+0xb93fd7]
V  [libjvm.so+0x967dd2]
  • VM is not at safepoint:
VM state:not at safepoint (normal execution)
  • Shenandoah executing GCTaskThread, which is doing concurrent marking:
Status: marking, not cancelled
...
Event: 1256.342 Concurrent marking
  • RHEL6 backtrace:
(gdb) bt
#0  0x00007f461055d4f5 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00007f461055ecd5 in abort () at abort.c:92
#2  0x00007f460fdd7445 in os::abort (dump_core=true) at /usr/src/debug/java-1.8.0-openjdk-1.8.0.262.b10-0.el6_10.x86_64/openjdk/hotspot/src/os/linux/vm/os_linux.cpp:1572
#3  0x00007f460ffe46c3 in VMError::report_and_die (this=0x7f460d79e460)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.262.b10-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/utilities/vmError.cpp:1112
#4  0x00007f460fdddf02 in JVM_handle_linux_signal (sig=11, info=0x7f460d79e670, ucVoid=0x7f460d79e540, abort_if_unrecognized=226092000)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.262.b10-0.el6_10.x86_64/openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp:541
#5  0x00007f460fdd2fd3 in signalHandler (sig=11, info=0x7f460d79e670, uc=0x7f460d79e540)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.262.b10-0.el6_10.x86_64/openjdk/hotspot/src/os/linux/vm/os_linux.cpp:4591
#6  <signal handler called>
#7  do_task<ShenandoahMarkRefsClosure> (this=0x7f4608061280, cl=0x7f460d79ed40, live_data=0x7f46080a15f0, worker_id=4, terminator=0x7f460c2925e0)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.262.b10-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahConcurrentMark.inline.hpp:48
#8  ShenandoahConcurrentMark::mark_loop_work<ShenandoahMarkRefsClosure, true> (this=0x7f4608061280, cl=0x7f460d79ed40, live_data=0x7f46080a15f0, worker_id=4,
    terminator=0x7f460c2925e0)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.262.b10-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahConcurrentMark.cpp:1003
#9  0x00007f460feb9cb7 in ShenandoahConcurrentMark::mark_loop_prework<true> (this=0x7f4608061280, w=4, t=0x7f460c2925e0, rp=0x7f4608178e10, strdedup=<value optimized out>)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.262.b10-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahConcurrentMark.cpp:932
#10 0x00007f460fec73c8 in mark_loop (this=0x7f460c2925a0, worker_id=4)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.262.b10-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahConcurrentMark.hpp:67
#11 ShenandoahConcurrentMarkingTask::work (this=0x7f460c2925a0, worker_id=4)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.262.b10-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahConcurrentMark.cpp:181
#12 0x00007f4610005fd7 in GangWorker::loop (this=0x7f46080656e0)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.262.b10-0.el6_10.x86_64/openjdk/hotspot/src/share/vm/utilities/workgroup.cpp:329
#13 0x00007f460fdd9dd2 in java_start (thread=0x7f46080656e0)
    at /usr/src/debug/java-1.8.0-openjdk-1.8.0.262.b10-0.el6_10.x86_64/openjdk/hotspot/src/os/linux/vm/os_linux.cpp:847
#14 0x00007f4610eefaa1 in start_thread (arg=0x7f460d79f700) at pthread_create.c:301
#15 0x00007f4610613c4d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Environment

  • OpenJDK 8
  • Shenandoah 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