JVM 崩溃报错 SIGSEGV (0xb): 如何分析并解决问题?
如何分析 jvm 崩溃错误 sigsegv (0xb)
最近,几台线上的实例在同一时间段出现 jvm 崩溃。以下是获取到的 hs_err_pidxxx.log 文件的主要内容:
# # a fatal error has been detected by the java runtime environment: # # sigsegv (0xb) at pc=0x00007f5e94bd20a7, pid=752, tid=140036367759104 # # jre version: java(tm) se runtime environment (8.0_60-b27) (build 1.8.0_60-b27) # java vm: java hotspot(tm) 64-bit server vm (25.60-b23 mixed mode linux-amd64 compressed oops) # problematic frame: # v [libjvm.so+0x6340a7] ifnode::up_one_dom(node*, bool)+0x97 # # core dump written. default location: /home/admin/core or core.752 # # if you would like to submit a bug report, please visit: # http://bugreport.java.com/bugreport/crash.jsp #
问题分析
记录了 jvm 崩溃的信息,包括错误代码 (sigsegv (0xb))、pc 寄存器值 (0x00007f5e94bd20a7) 和线程 id (140036367759104)。
此外,还有问题帧信息:
V [libjvm.so+0x6340a7] IfNode::up_one_dom(Node*, bool)+0x97
这表明问题出在 ifnode::up_one_dom() 方法的 +0x97 偏移处。
解决方案
该错误通常与内存访问违规有关。在这种情况下,怀疑是由于 jdk 中的 jit 编译相关漏洞导致的。
解决步骤:
- 升级 jdk 版本。建议升级到较新版本,如 1.8.191 或更高版本。
- 重新编译和部署代码。
业务代码影响
com.j.m.s.e.m.abstractbaseexceptioninfomessage 是业务代码的一部分。该代码本身与 jvm 崩溃无关,但可能受到崩溃的影响。
结论
通过分析 jvm 崩溃日志,可以确定问题与 jdk 中的漏洞有关。升级 jdk 版本可以解决此问题。
以上就是JVM 崩溃报错 SIGSEGV (0xb): 如何分析并解决问题?的详细内容,更多请关注其它相关文章!