JVM使用G1 GC和Trove库时崩溃

9
我们有以下问题:在我们的一些Linux机器上,使用Trove库和G1 GC的Java应用程序会很快崩溃,并显示以下类型的消息:
A fatal error has been detected by the Java Runtime Environment:

 SIGSEGV (0xb) at pc=0x00002aaaaaef81d1, pid=31063, tid=1141000512

JRE version: 6.0_29-b11
Java VM: Java HotSpot(TM) 64-Bit Server VM (20.4-b02 mixed mode linux-amd64 )
Problematic frame:
J  gnu.trove.impl.hash.TObjectHash.insertKey(Ljava/lang/Object;)I

这里引起我的注意的是问题框架,总是一样的。我习惯于在这里看到一些库,但从来没有看到实际的Java代码。奇怪的是,一些应该有相同设置的机器没有受到影响。在Windows上,我也从未见过这种情况。这个问题在最近的Java 7版本中仍然存在。将G1 GC从任何其他GC切换解决了这个问题。我们使用Maven解析Trove库,尝试了几个版本,包括3.0.3 - 总是出现同样的问题。
有人知道这是什么原因吗?有已知的G1 GC bug吗?Trove是否以特殊方式编译,可能会引起这个问题?
更新:不同的应用程序,不同的服务器,最新的Java(7u5),类似的问题:
A fatal error has been detected by the Java Runtime Environment:

SIGSEGV (0xb) at pc=0x00002aadb7a38093, pid=14100, tid=46925573367184

JRE version: 7.0_05-b05
Java VM: Java HotSpot(TM) 64-Bit Server VM (23.1-b03 mixed mode linux-amd64 compressed oops)
Problematic frame:
J  gnu.trove.map.hash.THashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

再次强调,切换到除G1之外的垃圾回收器将有所帮助。保留G1但是删除Trove库,问题也会消失。不幸的是,我无法创建最小化测试套件,因此很难提交合理的错误报告。对于原因有什么想法或者能够帮助我构建测试套件的任何想法吗?


1
你能否包含一个Java 7更新5版本的崩溃以证明它仍然存在问题吗? - Peter Lawrey
我们使用的所有版本都是Oracle 64位。我们遇到问题的最新版本是Java 7u4。不幸的是,由于这个关键错误(在这里描述:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7166379 和 https://forums.oracle.com/forums/thread.jspa?messageID=10351215&#10351215),这个版本必须从我们的系统中删除。据我所知,这个错误在7u5中没有修复,这使我们现在只能使用最多7u3版本。我将尝试在受影响的系统之一上暂时安装7u5并报告结果。 - malamut
我刚刚遇到了这个 bug。你知道升级到 1.7.0_40 版本是否能解决它吗? - oxbow_lakes
@oxbow_lakes:抱歉,我不知道。我们最终放弃了G1,因为在2011/2012版本中它变得越来越有bug。尽管如此,这个决定可以追溯到2012年底;事情可能已经在此期间得到改善。请继续尝试1.7.0_40,并在此处报告结果。 - malamut
仍然在1.7.0_u45版本中出现故障。 - oxbow_lakes
显示剩余2条评论
2个回答

3

我们从未使用过那个特定的Java版本,但我可以确认该问题已在Java 8 Update 45中得到修复。所以我猜那确实是罪魁祸首。终于解决了! :) - malamut

3

2
该问题在最近的Java 7版本中仍然存在。 - Michael Berry
嗯,你说得对 - 我在原帖中漏掉了那个。好吧,我会在Oracle的错误跟踪器上报告一个bug,然后...我猜,使用不同的GC,或者使用除Trove之外的其他东西。我想当我看到JRE 6时,我没有想到有人会更喜欢6而不是7,除非他们被困在其中。 - Joseph Ottinger
当然,现在最好的做法可能是切换到另一个垃圾收集器,并向Oracle提交错误报告。虽然这是一个有趣的问题。 - Michael Berry
好的。有趣。我希望你能回复任何发现。 - Nicholas
Java 1.7.0_17 - 问题仍然存在。 - Andremoniy
仍然存在于1.7.0_u45版本中。 - oxbow_lakes

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