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

标签 java segmentation-fault ignite jvm-crash redhat-openjdk

我们发现 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 编译代码崩溃的情况,因为有问题的框架是 java 框架(有一个“J”)

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

期待找到追踪此错误的任何线索。

最佳答案

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

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

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

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

关于java - 如何知道 JVM 因 Segfault 崩溃的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59982742/

相关文章:

C:二维字符串数组段错误

java - 将新主机添加到 apache ignite 数据网格

java - 点燃性能 : How to tune cache write performance for ignite thin client?

java - 了解客户端和服务器

java - JPA : reference to a generated JoinTable

javascript - 如何在客户端使用 React 的 BrowserRouter,在服务端使用 Java REST API (Spring Boot)?

java - 复合 ID 及其在 JPA 中的生成

java - 在 Spring Social 中覆盖默认重定向 View

c++ - 代码在 OS X 上运行,Codeblocks Vbox 中的段错误

c - 指针和结构的段错误