是什么导致Java程序在热点转储中死掉,其中包含SIGSEGV?

是什么导致Java程序在热点转储中死掉,其中包含SIGSEGV?,java,jvm,Java,Jvm,嗯,我有一个应用程序运行在Java 64位(6.0_35)和UbuntuLST10.0464位。每次我执行一个特定的方法,我的JVM就会崩溃,我不知道为什么 # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f75e3e639a3, pid=3750, tid=140144311375616 # # JRE version: 6.0_35-b10

嗯,我有一个应用程序运行在Java 64位(6.0_35)和UbuntuLST10.0464位。每次我执行一个特定的方法,我的JVM就会崩溃,我不知道为什么

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f75e3e639a3, pid=3750, tid=140144311375616
#
# 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  [libLeituraMFDBin_x64.so+0x99a3]  LeituraMFDBin(char const*, char const*, char const*, bool, bool, bool, bool)+0xebf
#
# An error report file with more information is saved as:
# /projetos/trunk_desenvolvimento/hs_err_pid3750.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

您正在使用本机库:libLeituraMFDBin_x64.so。它正在崩溃。它有一个bug;给定一些输入条件,它会将指针延迟到无效内存。这可能很简单,因为您传递了一个Java
null
,但它无法检查,或者可能是某个复杂的编码错误导致存储损坏。在任何情况下,该库都没有通过JNI库的基本测试,即不要崩溃


你需要和那个图书馆的作者谈谈这件事。显然,此库的问题很常见,请参见示例。

您使用的是本机库:libLeituraMFDBin_x64.so。它正在崩溃。它有一个bug;给定一些输入条件,它会将指针延迟到无效内存。这可能很简单,因为您传递了一个Java
null
,但它无法检查,或者可能是某个复杂的编码错误导致存储损坏。在任何情况下,该库都没有通过JNI库的基本测试,即不要崩溃


你需要和那个图书馆的作者谈谈这件事。显然,此库的问题很常见,请参见示例。

您应该发布该特定方法的代码,至少对我来说就像是一个有问题的本机库。不幸的是,我不能这样做,因为此方法来自“library.so”,而我无权访问它,但在另一台计算机上,这很好。从发布的link@bmargiles来看,似乎你解决了这个问题。思想共享?你应该发布该特定方法的代码,至少在我看来,它就像一个有问题的本机库。不幸的是,我不能这样做,因为该方法来自“library.so”,我没有访问权限,但在其他计算机上,它可以正常工作。从link@bmargulies posted,看起来你解决了这个问题。分享思想?这篇文章(链接中)是我的。呵呵,没有解决办法。我认为这不是图书馆的问题,因为昨天工作正常,但今天不行。从定义上讲,JNI库不应该崩溃。所以,要么@Rahul是正确的,你的硬件已经死了,要么库中有一个你刚刚挠痒痒的bug。这难道不是代码中的一个segfault,它只发生在特定的情况下吗?@user2776409:显然,如果那篇帖子是你的,那么它在7月17日也不能正常工作。软件错误不一定总是发生。它们可能会因环境变化和许多其他因素而暴露。关键在于,这是一个发生在该库中的问题,而不是Java代码中的问题。但是,传递到库中的内容可能会对其产生影响。例如,如果您传入一个空引用,而库不需要它,那么您可能会在本机代码中得到一个segfault,而不是在Java代码中得到一个NPE。呵呵,没有解决方案。我不认为这是一个库问题,因为昨天正常工作,但今天不是。根据定义,JNI库不应该崩溃。所以,要么@Rahul是正确的,你的硬件已经死了,要么库中有一个你刚刚挠痒痒的bug。这难道不是代码中的一个segfault,它只发生在特定的情况下吗?@user2776409:显然,如果那篇帖子是你的,那么它在7月17日也不能正常工作。软件错误不一定总是发生。它们可能会因环境变化和许多其他因素而暴露。关键在于,这是一个发生在该库中的问题,而不是Java代码中的问题。但是,传递到库中的内容可能会对其产生影响。例如,如果您传入一个null引用,而库不需要它,那么您可能会在本机代码中得到一个segfault,而不是在Java代码中得到一个NPE。