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.

Chris R
  • 17,546
  • 23
  • 105
  • 172

2 Answers2

12

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

Kraagenskul
  • 424
  • 1
  • 7
  • 18
Mark
  • 28,783
  • 8
  • 63
  • 92
  • I was just thinking, "Now where did I see something about this recently?" Turns out it was Kohsuke's blog. – Michael Myers Feb 26 '09 at 21:42
  • Link for [Java 8 Troubleshooting Guide](https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/toc.html). For JVM crash (core dump file), use [jdb](https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr011.html) – Lee Chee Kiam Jul 01 '15 at 13:09
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.

martin
  • 11
  • 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? – John May 22 '18 at 20:33