Java -version output
openjdk version "1.8.0_502-internal-fastdebug"
OpenJDK Runtime Environment (build 1.8.0_502-internal-fastdebug-_2026_06_24_18_20-b00)
Eclipse OpenJ9 VM (build 1.8.0_502-internal-_2026_06_24_18_20-b00-master-45981f54ca, JRE 1.8.0 Linux amd64-64-Bit Compressed References 20260624_000000 (JIT enabled, AOT enabled)
OpenJ9 - 45981f54ca
OMR - a39ef2b2c
JCL - 0c2003e7d6 based on jdk8u502-b05)
Summary of problem
Hi, we have identified a concurrent Java GC/JIT stress test case that can cause OpenJ9 JDK 8 fastdebug to crash.
The attached package contains the reduced Java test sources, a replay Java agent, a recorded scheduling sequence, VM options, and a javacore from a reproduced crash. The Java agent is used to replay a recorded thread schedule. The fatal event occurs inside OpenJ9 while a JIT compilation thread is compiling the test method:
com/gcscheduling/generated/DirectMemoryCrash.alternateBitsUsingBytes(I)V
The crash is reproducible with OpenJ9 JDK 8 fastdebug and Balanced GC using:
-Xmx512m -Xms512m
-Xgcpolicy:balanced
-Xgcthreads16
-XX:+IdleTuningIgnoreUnrecognizedOptions
Observed crash:
Dump Event "gpf" (00002000)
Signal_Number: 00000005
Current thread: "JIT Compilation Thread"
Compiling method: com/gcscheduling/generated/DirectMemoryCrash.alternateBitsUsingBytes(I)V
Module: /lib/x86_64-linux-gnu/libc.so.6
Symbol: gsignal
From the reproduced javacore:
1XHEXCPMODULE Compiling method: com/gcscheduling/generated/DirectMemoryCrash.alternateBitsUsingBytes(I)V
3XMTHREADINFO "JIT Compilation Thread-001" ... current category="JIT"
Steps to Reproduce
The attached package is named bug4_submit.zip.
bug4_submit.zip
unzip bug4_submit.zip
cd bug4_submit
chmod +x run.sh
JAVA_HOME=/path/to/openj9-jdk8-fastdebug ./run.sh
The script compiles the Java sources and executes the test with replay scheduling enabled. The effective JVM command is:
$JAVA_HOME/bin/java \
-Xgcpolicy:balanced \
-Xmx512m -Xms512m \
-Xgcthreads16 \
-XX:+IdleTuningIgnoreUnrecognizedOptions \
-javaagent:Schedule/target/Schedule-1.0-SNAPSHOT-agent.jar=mode=replay\;file=workspace/sequence-checkpoints/ConcurrentTest_20260626_045330_629_BALANCED_sequence.json\;dumpBytecode=true \
-cp workspace/output/classes:workspace/output/classes:Schedule/target/Schedule-1.0-SNAPSHOT-agent.jar \
com.gcscheduling.generated.ConcurrentTest_20260626_045330_629
The crash is probabilistic. In our environment, the attached reproducer triggered the crash in 3 out of 5 runs.
Note
This issue was reproduced on a self-built OpenJ9 JDK 8 fastdebug build. We are reporting it as a fastdebug crash because the same test did not reproduce in our limited runs on a release OpenJ9 JDK 8 build.
The Java agent is included only to replay the recorded concurrent schedule. The package also includes a javacore from a reproduced crash.
The package keeps the original replay layout because the crash appears to be timing-sensitive; simplifying the layout reduced reproducibility in our tests.
This may be related to #23961 because both failures involve OpenJ9 JDK 8, Balanced GC, replayed concurrent scheduling, and JIT/stack-walking related behavior. However, the crash signature is different: #23961 crashed in a GC Worker in libj9gc29.so, while this reproducer crashes in a JIT Compilation Thread while compiling DirectMemoryCrash.alternateBitsUsingBytes(I)V on a fastdebug build.
Software and Hardware Environment
OS:
Linux 1ad3273ad17c 4.15.0-196-generic #207-Ubuntu SMP Thu Oct 27 21:24:58 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Architecture:
x86_64 / amd64
Container:
Linux container
NUMA support enabled, as reported in the OpenJ9 javacore.
Java -version output
Summary of problem
Hi, we have identified a concurrent Java GC/JIT stress test case that can cause OpenJ9 JDK 8 fastdebug to crash.
The attached package contains the reduced Java test sources, a replay Java agent, a recorded scheduling sequence, VM options, and a javacore from a reproduced crash. The Java agent is used to replay a recorded thread schedule. The fatal event occurs inside OpenJ9 while a JIT compilation thread is compiling the test method:
The crash is reproducible with OpenJ9 JDK 8 fastdebug and Balanced GC using:
Observed crash:
From the reproduced javacore:
Steps to Reproduce
The attached package is named
bug4_submit.zip.bug4_submit.zip
unzip bug4_submit.zip cd bug4_submit chmod +x run.sh JAVA_HOME=/path/to/openj9-jdk8-fastdebug ./run.shThe script compiles the Java sources and executes the test with replay scheduling enabled. The effective JVM command is:
The crash is probabilistic. In our environment, the attached reproducer triggered the crash in 3 out of 5 runs.
Note
This issue was reproduced on a self-built OpenJ9 JDK 8 fastdebug build. We are reporting it as a fastdebug crash because the same test did not reproduce in our limited runs on a release OpenJ9 JDK 8 build.
The Java agent is included only to replay the recorded concurrent schedule. The package also includes a javacore from a reproduced crash.
The package keeps the original replay layout because the crash appears to be timing-sensitive; simplifying the layout reduced reproducibility in our tests.
This may be related to #23961 because both failures involve OpenJ9 JDK 8, Balanced GC, replayed concurrent scheduling, and JIT/stack-walking related behavior. However, the crash signature is different: #23961 crashed in a GC Worker in libj9gc29.so, while this reproducer crashes in a JIT Compilation Thread while compiling DirectMemoryCrash.alternateBitsUsingBytes(I)V on a fastdebug build.
Software and Hardware Environment