JVM 崩溃报错 SIGSEGV (0xb): 如何分析并解决问题?

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 编译相关漏洞导致的。

解决步骤:

  1. 升级 jdk 版本。建议升级到较新版本,如 1.8.191 或更高版本。
  2. 重新编译和部署代码。

业务代码影响

com.j.m.s.e.m.abstractbaseexceptioninfomessage 是业务代码的一部分。该代码本身与 jvm 崩溃无关,但可能受到崩溃的影响。

结论

通过分析 jvm 崩溃日志,可以确定问题与 jdk 中的漏洞有关。升级 jdk 版本可以解决此问题。

以上就是JVM 崩溃报错 SIGSEGV (0xb): 如何分析并解决问题?的详细内容,更多请关注其它相关文章!