没有任何命名库的本机 JVM SIGSEGV 崩溃
JVM SIGSEGV crash in native without any named library
我们现在在 Oracle 1.8 中遇到了两次 SIGSEGV 崩溃。0_60 JVM 错误日志甚至没有涉及任何库,只是说崩溃发生在本机代码中:
# Problematic frame:
# C 0x00007f6d04000000
#
和
# Problematic frame:
# C 0x00007fc6ec048ff0
#
两次崩溃的线程都是应用程序线程。 ForkJoinPool
或 Tomcat ajp-bio 线程。
可能出了什么问题?通常,当本机库出现故障时,会包含库的名称。
我在 sanitized hs_err-logs for the first crash and the second crash (full version for comparison) 中看到的内容并没有给我更多关于可能出错的想法,因为似乎有足够的内存。只是元空间甚至接近运行。
环境在 64 位上运行Linux:
[foo@bar ~]$ uname -a
Linux bar 2.6.32-504.16.2.el6.x86_64 #1 SMP Wed Apr 22 06:48:29 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
您只发布了一个完整的日志,因此实际上不可能在此处发现模式,但 C 框架位于不可执行的内存区域并且在代码之外 space。 VM 事件还显示了一系列 re/deoptimizations 和偏差撤销。所以我猜这可能是编译错误。
您可以尝试的事情:
- 更新您的 JVM。
8.0_60-b27
不是最新的补丁级别。
- 尝试
-XX:-UseBiasedLocking -XX:-TieredCompilation
- 尝试
-XX:-UseBiasedLocking -XX:TieredStopAtLevel=1
如果更新 vm 没有解决问题,但其中一个选项可以解决,那么它可能是 VM 错误,您应该使用 linux 发行版或 oracle 进行归档。
我们现在在 Oracle 1.8 中遇到了两次 SIGSEGV 崩溃。0_60 JVM 错误日志甚至没有涉及任何库,只是说崩溃发生在本机代码中:
# Problematic frame:
# C 0x00007f6d04000000
#
和
# Problematic frame:
# C 0x00007fc6ec048ff0
#
两次崩溃的线程都是应用程序线程。 ForkJoinPool
或 Tomcat ajp-bio 线程。
可能出了什么问题?通常,当本机库出现故障时,会包含库的名称。 我在 sanitized hs_err-logs for the first crash and the second crash (full version for comparison) 中看到的内容并没有给我更多关于可能出错的想法,因为似乎有足够的内存。只是元空间甚至接近运行。
环境在 64 位上运行Linux:
[foo@bar ~]$ uname -a
Linux bar 2.6.32-504.16.2.el6.x86_64 #1 SMP Wed Apr 22 06:48:29 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
您只发布了一个完整的日志,因此实际上不可能在此处发现模式,但 C 框架位于不可执行的内存区域并且在代码之外 space。 VM 事件还显示了一系列 re/deoptimizations 和偏差撤销。所以我猜这可能是编译错误。
您可以尝试的事情:
- 更新您的 JVM。
8.0_60-b27
不是最新的补丁级别。 - 尝试
-XX:-UseBiasedLocking -XX:-TieredCompilation
- 尝试
-XX:-UseBiasedLocking -XX:TieredStopAtLevel=1
如果更新 vm 没有解决问题,但其中一个选项可以解决,那么它可能是 VM 错误,您应该使用 linux 发行版或 oracle 进行归档。