我们有以下问题:在我们的某些 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错误?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以外的GC也将有所帮助。保留G1但摆脱Trove库,问题也将消失。不幸的是,我无法创建最小的测试套件,因此很难提交合理的错误报告。关于起因的任何想法,或者任何可以帮助我构建测试套件的想法?