Как мне интерпретировать эту ошибку JVM?

У меня есть приложение Java, в котором используется некоторый нативный код, и оно дает сбой. Я хочу выяснить, где ошибка, но не знаю, как читать файл дампа hs_err_pid:

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

По сути, на что указывают кадры «j»? V+158 относится к смещению байт-кода в классе? Как я могу отследить это до исходных строк в игре?

На самом деле, я хотел бы получить общее руководство по гроккингу этих дампов. Это тоже было бы фантастически.


person Chris R    schedule 26.02.2009    source источник


Ответы (2)


Общее руководство можно найти по этим двум ссылкам Устранение неполадок в журнале неустранимых ошибок и Ускоренный курс по JVM Анализ сбоев

person Mark    schedule 26.02.2009
comment
Я просто подумал: «Где я видел что-то об этом в последнее время?» Оказывается, это был блог Косукэ. - person Michael Myers; 27.02.2009
comment
Ссылка на Руководство по устранению неполадок Java 8. Для сбоя JVM (файл дампа ядра) используйте jdb< /а> - person Lee Chee Kiam; 01.07.2015

я тоже был в замешательстве, что может означать "V+158"?? однако объяснение простое, «V» — это тип возвращаемого значения метода, который является частью описания метода. (описание состоит из имени пакета, имени класса, имени метода, типов параметров, принимаемых методом, и типа возвращаемого значения) «V» означает «недействительно».

+158 - это так называемый "индекс байт-кода" - вы были правы.

person martin    schedule 13.11.2009
comment
Конечно, V означает пустоту, хорошо, что вы нам напомнили. Я узнал об этом от JNI, можете ли вы указать, где вы берете свой источник? - person John; 22.05.2018