hs_err_pid*.log文件格式Crash文件默认在当前路径下生成,也可以通过参数指定: java -XX:ErrorFile=/var/log/java/java_error%p.log 产生该文件可能的错误:
文件头格式: # # An unexpected error has been detected by Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x417789d7, pid=21139, tid=1024 # # Java VM: Java HotSpot(TM) Client VM (1.6.0-rc-b63 mixed mode, sharing) # Problematic frame: # C [libNativeSEGV.so+0x9d7] # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # This example shows that the VM crashed on an unexpected signal. The next line describes the signal type, program counter (pc) that caused the signal, process ID and thread ID, as follows. # SIGSEGV (0xb) at pc=0x417789d7, pid=21139, tid=1024 | | | | +--- thread id | | | +------------- process id | | +--------------------------- program counter | | (instruction pointer) | +--------------------------------------- signal number +---------------------------------------------- signal name The next line contains the VM version (Client VM or Server VM), an indication whether the application was run in mixed or interpreted mode, and an indication whether class file sharing was enabled. # Java VM: Java HotSpot(TM) Client VM (1.6.0-rc-b63 mixed mode, sharing) The next information is the function frame that caused the crash, as follows. # Problematic frame: # C [libNativeSEGV.so+0x9d7] | +-- Same as pc, but represented as library name and offset. | For position-independent libraries (JVM and most shared | libraries), it is possible to inspect the instructions | that caused the crash without a debugger or core file | by using a disassembler to dump instructions near the | offset. +----------------- Frame type In this example, the “C” frame type indicates a native C frame. The following table shows the possible frame types. 错误信号详见:Study_OS_Linux_Signal
线程信息: Current thread (0x0805ac88): JavaThread "main" [_thread_in_native, id=21139] | | | | +-- ID | | | +------------- state | | +-------------------------- name | +------------------------------------ type +-------------------------------------------------- pointer 对指令反编译wget https://hatter-source-code.googlecode.com/svn/trunk/hserranalysis/hserranalysisall.jar $ java -jar hserranalysisall.jar x86disassemble [INFO] Add system classloader jar url: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/sa-jdi.jar X86DisassemblerAnalysiser : > 0x417789c7: ec 14 e8 72 ff ff ff 81 c3 f2 13 00 00 8b 45 08 0x417789c7: inb %al 0x417789c8: adcb %al, 0xe8 0x417789ca: jb 0x417789cb 0x417789cc: bad opcode 0x417789cd: incl 1307331[%ecx] 0x417789d3: addb 2117[%ebx], %cl > 0x417789d7: 0f b6 00 88 45 fb 8d 83 6f ee ff ff 89 04 24 e8 0x417789d7: movzbl %eax, [%eax] 0x417789da: movb -5[%ebp], %al 0x417789dd: leal %eax, -4497[%ebx] 0x417789e3: movl [%esp], %eax 0x417789e6: call 0x417789eb > exit Exit! Core dumpulimit -c unlimited $ file core.12989 core.12989: ELF 64-bit LSB core file AMD x86-64, version 1 (SYSV), SVR4-style, from 'jconsole' gdb -c core.xxxx <exec> info threads bt/where bt full disassemble 参考资料[1]. http://rednaxelafx.iteye.com/blog/729214 |
||||||||||