Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I interpret this JVM fault?

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.

like image 355
Chris R Avatar asked Dec 14 '22 05:12

Chris R


2 Answers

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

like image 109
Mark Avatar answered Dec 21 '22 00:12

Mark


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.

like image 43
martin Avatar answered Dec 21 '22 00:12

martin