Java 如何知道JVM因Segfault崩溃的原因?

Java 如何知道JVM因Segfault崩溃的原因?,java,segmentation-fault,ignite,jvm-crash,redhat-openjdk,Java,Segmentation Fault,Ignite,Jvm Crash,Redhat Openjdk,我们看到JVM有时会因为segfault而崩溃。我们在日志中看到的唯一错误如下 任何人都可以通过查看下面的错误跟踪来提出建议 在试图理解Oracle JVM文档崩溃的原因时,这看起来是编译代码中5.1.2崩溃的情况,因为有问题的框架是java框架(有一个“J”) 虽然我们无法进一步了解它,但我们也不确定它何时出现,唯一可能的模式是JVM运行5-6天时出现,通常是在周五。 我们使用的是运行在RHEL6.10上的RedHat提供的openjdk-8(“1.8.0_232”)发行版 期待获得跟踪此

我们看到JVM有时会因为segfault而崩溃。我们在日志中看到的唯一错误如下

任何人都可以通过查看下面的错误跟踪来提出建议



在试图理解Oracle JVM文档崩溃的原因时,这看起来是编译代码中5.1.2崩溃的情况,因为有问题的框架是java框架(有一个“J”)

虽然我们无法进一步了解它,但我们也不确定它何时出现,唯一可能的模式是JVM运行5-6天时出现,通常是在周五。 我们使用的是运行在RHEL6.10上的RedHat提供的openjdk-8(“1.8.0_232”)发行版


期待获得跟踪此错误的任何指导点。

当前堆栈帧已将
writeObject0
作为最后调用的方法。有一种命名约定,
native
方法的名称以
0
结尾。因此,请检查该方法是否确实是本机方法

如果是的话,它可能是用C语言编写的,这是一种古老的不安全语言,其程序往往会以不受控制的方式崩溃。这通常会导致SIGSEGV

在本例中,该方法是用Java编写的


如错误消息中所述,请阅读hs_err_pid42623.log以了解更多详细信息。在该文件中,您将在崩溃的代码周围找到寄存器和一些机器指令。

当前堆栈帧的上次调用方法为
writeObject0
。有一种命名约定,
native
方法的名称以
0
结尾。因此,请检查该方法是否确实是本机方法

如果是的话,它可能是用C语言编写的,这是一种古老的不安全语言,其程序往往会以不受控制的方式崩溃。这通常会导致SIGSEGV

在本例中,该方法是用Java编写的


如错误消息中所述,请阅读hs_err_pid42623.log以了解更多详细信息。在该文件中,您可以找到崩溃代码周围的寄存器和一些机器指令。

您使用的是什么JVM设置?您的标志中是否有
-XX:+UseCompressedOops
?如果是这样的话:试着移除它,看看崩溃是否仍然发生谢谢@Jeroensteenbeek。虽然我们没有明确设置这个标志,但您使用的是什么JVM设置?您的标志中是否有
-XX:+UseCompressedOops
?如果是这样的话:试着移除它,看看崩溃是否仍然发生谢谢@Jeroensteenbeek。虽然我们没有明确设置这个标志。谢谢罗兰。关于本机调用的第一点,看起来不是这样,这是一个ApacheIgnite代码,从源代码看,这看起来不是本机代码。关于第二点,请检查生成的日志文件以了解更多详细信息,不幸的是,我们现在没有此文件,因为我已将此文件与重新启动一起删除,并且我们的支持团队未能对此进行备份。是的,我也看到了这一点。不过你还是应该看看更详细的hs_err文件。谢谢罗兰。关于本机调用的第一点,看起来不是这样,这是一个ApacheIgnite代码,从源代码看,这看起来不是本机代码。关于第二点,请检查生成的日志文件以了解更多详细信息,不幸的是,我们现在没有此文件,因为我已将此文件与重新启动一起删除,并且我们的支持团队未能对此进行备份。是的,我也看到了这一点。您仍然应该查看更详细的hs_err文件。
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fef7f1d3eb0, pid=42623, tid=0x00007feea62c8700
#
# JRE version: OpenJDK Runtime Environment (8.0_222-b10) (build 1.8.0_222-b10)
# Java VM: OpenJDK 64-Bit Server VM (25.222-b10 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# J 62683 C2 org.apache.ignite.internal.marshaller.optimized.OptimizedObjectOutputStream.writeObject0(Ljava/lang/Object;)V (331 bytes) @ 0x00007fef7f1d3eb0 [0x00007fef7f1d3e00+0xb0]
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /tmp/hsperfdata_pvappuser/hs_err_pid42623.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp