Java 8中出现SIGSEGV(0xb)错误导致崩溃

3
在Debian 7 64位机器上运行Minecraft服务器。已安装Oracle Java 8_05 JRE 64位。自某段时间以来,该服务器每天会崩溃两次或更多次。
Java崩溃报告:
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f0921139a9c, pid=25246, tid=139676902000384
#
# JRE version: Java(TM) SE Runtime Environment (8.0_05-b13) (build 1.8.0_05-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.5-b02 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# V  [libjvm.so+0x555a9c]  G1ParCopyClosure<false, (G1Barrier)2, false>::copy_to_survivor_space(oopDesc*)+0x3c
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
#

我该怎么解决?

忘记提到我使用的启动参数了:

    SERVICE="spigot.jar"
    MEMLOG="memory.log"
    SCREEN="classic"
    CPU_COUNT=4
    INITMEM="2048M"
    MAXMEM="12G"
    INVOCATION="java -Xms$INITMEM -Xmx$MAXMEM -XX:+AggressiveOpts - XX:ParallelGCThreads=$CPU_COUNT -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -Xloggc:$MEMLOG -jar $SERVICE nogui -o false"

执行命令可以使用以下语法:screen -dmS $SCREEN $INVOCATION

有什么可能会导致问题的吗?也许是GC标志吗?


你是否特别需要JRE 1.8?难道你不能使用Debian默认的JVM运行Minecraft吗? - Stefano Sanfilippo
这很可能是一个bug。启用核心转储,重现错误并在JVM Bugzilla上提交一个bug。 - Stefano Sanfilippo
我们已经使用Oracle JRE三年了。我们的服务器版本过去曾经遇到JVM的问题。 - John
1个回答

3
异常出现在以下代码中:V [libjvm.so+0x555a9c] G1ParCopyClosure<false, (G1Barrier)2, false>::copy_to_survivor_space(oopDesc*)+0x3c,这似乎是垃圾回收器的一部分(假设命名类似于OpenJDK),这不是您可以直接控制的,因此这很可能是Java实现中的错误。您能够做的最好的事情就是向Oracle报告该问题。

1
我的GC标志之一会导致这个问题吗? - John
1
通常情况下,GC标志不应该导致SIGSEGV,尤其是你列出的那些标志。是否可以使用除G1GC之外的其他GC(我不熟悉Oracle的JVM,但你的参数列表暗示了这一可能性)?如果可以的话,值得一试,因为故障发生的方法似乎属于G1。 - DrWatson
2
没有使用G1 GC“修复”了问题。 - John

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接