Support J9 / OpenJ9 ucontext (registers) by bric3 · Pull Request #10959 · DataDog/dd-trace-java
Parse the GPINFO register section (1XHREGISTERS / 2XHREGISTER tags)
from J9/OpenJ9 javacore crash dumps mirroring what was done for HotSpot.
Register format:
1XHREGISTERS Registers:
2XHREGISTER RIP: 00007F8B7C0B3D7D (x86-64)
2XHREGISTER PC: 0000FFFF98B9FB6C (aarch64)
Added crash dumps from IBM J9 (Java 8) and IBM Semeru / OpenJ9 (Java 11)
that were obtained using Docker and this crashing program:
```java
import sun.misc.Unsafe;
import java.lang.reflect.Field;
public class Crash {
public static void main(String[] args) throws Exception {
Field f = Unsafe.class.getDeclaredField("theUnsafe");
f.setAccessible(true);
Unsafe unsafe = (Unsafe) f.get(null);
unsafe.putInt(0L, 42); // SIGSEGV -> GPF dump
}
}
```
```
docker run --rm -v /tmp/j9-crash-test:/work ibmjava:8-sdk \
bash -c "cd /work && javac Crash.java && \
java -Xdump:java:events=gpf,file=/work/javacore.ibmj9.txt Crash"
```
```
docker run --rm -v /tmp/j9-crash-test:/work ibm-semeru-runtimes:open-11-jdk \
bash -c "cd /work && javac Crash.java && \
java -Xdump:java:events=gpf,file=/work/javacore.openj9.txt Crash"
```