How do I interpret this JVM fault?
Asked Answered
U

2

4

I have a Java app that makes use of some native code, and it's faulting. I want to find out where it's faulting, but I'm not sure how to read the hs_err_pid dump file:

Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x256cbc]
V  [libjvm.so+0x25df69]
V  [libjvm.so+0x25dbac]
V  [libjvm.so+0x25e8c8]
V  [libjvm.so+0x25e49f]
V  [libjvm.so+0x16fa3e]
j  br.com.cip.spb.single.SPBRequestApplicationController.processJob(Lcom/planet/core360/docgen/ProcessingEnvironment;Lcom/planet/core360/dsmv2/processing/ApplicationDataJob;)V+158
j  com.planet.core360.cgen.CgenProcessor.processJob(Ljava/lang/String;Lcom/planet/core360/docgen/ProcessingEnvironment;Lcom/planet/core360/dsmv2/processing/ApplicationDataJob;)V+108
j  com.planet.core360.cgen.CgenProcessor.processJob(Ljava/lang/String;Lcom/planet/core360/docgen/ProcessingEnvironment;Lcom/planet/core360/dsmv2/processing/ScheduledJob;)V+7
v  ~StubRoutines::call_stub
V  [libjvm.so+0x17af0c]
V  [libjvm.so+0x28b9d8]
V  [libjvm.so+0x17ad3f]
V  [libjvm.so+0x1a58a3]
V  [libjvm.so+0x18bc24]
C  [cgen+0xa6d6]
C  [cgen+0xae1e]  cgen_process_job+0x336
C  [cgen+0x10442]
C  [cgen+0x7714]
C  [cgen+0x38216]
C  [cgen+0x3a29d]
C  [cgen+0x37e3c]
C  [cgen+0x7558]
C  [libc.so.6+0x166e5]  __libc_start_main+0xe5

Basically, what are the 'j' frames pointing to? Is V+158 referring to the bytecode offset in the class? How can I trace back from this to the source lines in play?

Actually, I'd love a general guide to grokking these dumps. That'd be fantastic, too.

Undershorts answered 26/2, 2009 at 21:28 Comment(0)
C
12

For a general guide have a look at these two links Fatal Error Log Troubleshooting and Crash Course on JVM Crash Analysis

Calder answered 26/2, 2009 at 21:38 Comment(2)
I was just thinking, "Now where did I see something about this recently?" Turns out it was Kohsuke's blog.Kwiatkowski
Link for Java 8 Troubleshooting Guide. For JVM crash (core dump file), use jdbCaphaitien
C
1

i was confused too, what could "V+158" mean?? however explanation is simple, "V" is method return type and is part of method description. (the description is consist of package name, class name, method name, param types taken by the method and return type) "V" stands for "void".

+158 is so called "bytecode index" - you were right.

Churchwell answered 13/11, 2009 at 13:7 Comment(1)
Of course V stands for void, good of you to remind us. I learnt this from JNI, can you link where you are getting your source?Cicada

© 2022 - 2024 — McMap. All rights reserved.