我们的服务器因SIGSEGV故障而挂起..
Java运行时环境检测到致命错误:
SIGSEGV (0xb) at pc=0x00007ff5c7195aaa, pid=262778, tid=140690480097024
JRE version: 6.0_35-b10
Java VM: Java HotSpot(TM) 64-Bit Server VM (20.10-b01 mixed mode linux-amd64 compressed oops)
Problematic frame:
C [libdtagentcore.so+0xb7aaa] long double restrict+0x506f6
Run Code Online (Sandbox Code Playgroud)
我很想知道这可能是什么原因?
任何帮助都非常感谢..谢谢..
信号说明
SIGSEGV,SIGBUS,SIGFPE,SIGPIPE,SIGILL - 用于隐式空检查的实现,等等.
SIGQUIT线程转储支持 - 在标准错误流中转储Java堆栈跟踪.(可选的.)
SIGTERM,SIGINT,SIGHUP - 用于在VM异常终止时支持关闭挂钩机制(java.lang.Runtime.addShutdownHook).(可选的.)
SIGUSR1 - 用于实现java.lang.Thread.interrupt方法.(可配置.)从Solaris 10 OS开始不使用.在Linux上保留.SIGUSR2内部使用.(可配置.)从Solaris 10 OS开始不使用.SIGABRT HotSpot VM无法处理此信号.相反,它在致命错误处理后调用中止函数.如果应用程序使用此信号,则它应终止进程以保留预期的语义.
致命错误日志表明崩溃是在本机库中,本机代码或JNI库代码中可能存在错误.崩溃当然可能是由其他原因引起的,但对库和任何核心文件或崩溃转储的分析是一个很好的起点.
在这种情况下,在库libdtagentcore.so中执行的线程发生了SIGSEGV.在某些情况下,本机库中的错误表现为Java VM代码中的崩溃.考虑以下崩溃,其中JavaThread在_thread_in_vm状态下失败(意味着它在Java VM代码中执行)
它告诉您从 加载的代码中发生错误libdtagentcore.so
。更具体地说,它发生在名为restrict
和 offset 的函数中0x506f6
。提到的第一个偏移量 ( 0xb7aaa
) 是库本身内的偏移量。如果它是使用调试符号 (-g) 构建的,您可以查看导致异常的代码,在 Linux 上大致如下:
addr2line -e libdtagentcore.so -C -f 0xb7aaa
Run Code Online (Sandbox Code Playgroud)
如果有人在 Windows 上阅读本文,请参阅https://community.oracle.com/blogs/kohsuke/2009/02/19/crash-course-jvm-crash-analysis
更多详情请参见https://www.youtube.com/watch?v=jd6dJa7tSNU
归档时间: |
|
查看次数: |
17395 次 |
最近记录: |