JVM Crash 报错 SIGSEGV (0xb) 的根源:JIT 编译漏洞还是业务代码问题?
JVM Crash 报错 SIGSEGV (0xb) 的根源分析
问题背景:
线上运行的数台实例在同一时间段内陆续出现 JVM Crash,拿到 hs_err_pidxxx.log 文件进行分析。
日志分析:
从日志中可以看到,出现的是 SIGSEGV (0xb) 信号,表明发生了段错误。报错信息指向 IfNode::up_one_dom(Node*, bool)+0x97,这是一个 JIT 编译器内部函数。
原因分析:
根据经验和网上查阅相关资料,发现此报错可能是由于 JIT 编译过程中出现的漏洞导致。该漏洞与特定版本的 JDK 相关,升级 JDK 版本通常可以解决此问题。
解决方案:
将 JDK 版本升级至 1.8.191,该版本已修复了相关漏洞。
与业务代码的关系:
日志最后一行 com.j.m.s.e.m.AbstractBaseExceptionInfoMessage 是业务代码,但其与本次 JVM Crash 无关。崩溃的根本原因是 JIT 编译漏洞,与业务代码本身无关。
以上就是JVM Crash 报错 SIGSEGV (0xb) 的根源:JIT 编译漏洞还是业务代码问题?的详细内容,更多请关注其它相关文章!