Closed manqingl closed 2 months ago
@pshipton @keithc-ca FYI
I can confirm that J9JITGPRSpillArea
is not in j9ddr.dat
in 17.0.9+9.
However, I don't see any references to that class either. Were you using any DDR plugins?
I used the jdmpview tool in the !stackslots command (!stackslots 0x0096b300). The text in the top of this page has the details. @keithc-ca
So no DDR plugins?
No DDR plugins (assuming !stackslots is counted as a DDR command, but not as a DDR plugin).
J9JITGPRSpillArea
was added here: https://github.com/eclipse-openj9/openj9/commit/af13691598dd79b54f63f0affc8200c6e690bd38
I believe I added the structure (Jack committed it along with more changes). Did I miss something? There's no direct reference to the structure in the DDR code.
There is an inlined instance in J9VMContinuation
which is referenced in DDR code, but as far as I can tell, only in support of !continuationstack
and !continuationstackslots
which have guards that the core is from jdk19 or newer (which should not apply to the situation discussed here).
Looks like the exception happens when a new instance of StackWalker_29_V0() is created at StackWalker.java:131 :
java.lang.ClassNotFoundException: J9JITGPRSpillAreaPointer is not in core file at openj9.dtfj/com.ibm.j9ddr.StructureReader.getPointerClassBytes(StructureReader.java:1133) at openj9.dtfj/com.ibm.j9ddr.J9DDRClassLoader.getPointerClass(J9DDRClassLoader.java:229) at openj9.dtfj/com.ibm.j9ddr.J9DDRClassLoader.findClass(J9DDRClassLoader.java:129) at openj9.dtfj/com.ibm.j9ddr.J9DDRClassLoader.loadClass(J9DDRClassLoader.java:206) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:1075) at com.ibm.j9ddr.vm29.j9.stackwalker.StackWalker$1.allAlgorithms(StackWalker.java:131) at com.ibm.j9ddr.vm29.j9.AlgorithmPicker.pickAlgorithm(AlgorithmPicker.java:43) at com.ibm.j9ddr.vm29.j9.stackwalker.StackWalker.getImpl(StackWalker.java:138) at com.ibm.j9ddr.vm29.j9.stackwalker.StackWalker.walkStackFrames(StackWalker.java:99) at com.ibm.j9ddr.vm29.tools.ddrinteractive.commands.StackWalkCommand.run(StackWalkCommand.java:144) at openj9.dtfj/com.ibm.j9ddr.tools.ddrinteractive.Context.tryCommand(Context.java:229) at openj9.dtfj/com.ibm.j9ddr.tools.ddrinteractive.Context.execute(Context.java:202) at openj9.dtfj/com.ibm.j9ddr.tools.ddrinteractive.DDRInteractive.execute(DDRInteractive.java:356)
I think this is a consequence of #18014. I'm hoping that this can be remedied by declaring a fictitious (and unused) field of J9JITGPRSpillArea
which will allow that structure to be referenced. If I put a test build together, could you test it on a troublesome system dump, @manqingl? If so, which platform works for you?
I can test in a Linux or AIX platform. @keithc-ca
It looks to me some generated classes were deleted from openj9.dtfj.jmod. This breaks the backward compatibility of Jdmpview
Warning: native libraries are not available for core.20240726.063619.30790.0001.dmp For a list of commands, type "help"; for how to use "help", type "help help" Available contexts (* = currently selected context) :
Source : file:///ecurep/sf/TS016/603/TS016603209/2024-07-26/core.20240726.063619.30790.0001.dmp.zip_unpack/scratch/core/core.20240726.063619.30790.0001.dmp *0 : PID: 56618 : JRE 17 Linux amd64-64 (build 17.0.9+9) IBM Semeru Runtime Open Edition