0

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

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


# 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

在尝试了解此崩溃 Oracle JVM 文档https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/crashes001.html的原因时,这似乎是 5.1.2 Crash in编译代码作为有问题的框架是java框架(有一个“J”)

虽然无法进一步了解它,但我们也不确定它什么时候出现,唯一可能的模式是它在 JVM 运行 5-6 天时出现,所以通常是在星期五。我们使用的是在 RHEL 6.10 上运行的 RedHat 提供的 openjdk-8 ("1.8.0_232") 发行版。

期待在跟踪此错误时获得任何领先点。

4

1 回答 1

0

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

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

在这种情况下,该方法是用 Java 编写的。

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

于 2020-01-21T07:00:08.327 回答