У нас есть следующая проблема :На некоторых наших машинах с Linux приложения Java, которые используют библиотеку trove и G1 GC, довольно быстро аварийно завершают работу с сообщениями следующего типа:
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 решает проблему немедленно. Мы используем библиотеку trove, разрешенную Maven, пробовали несколько версий, включая 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;
Опять же, переключение на GC, отличный от G1, поможет. Оставьте G1, но избавьтесь от библиотеки Trove, и проблема тоже исчезнет. К сожалению, мне не удалось создать минимальный набор тестов, поэтому мне сложно составить разумный отчет об ошибке. Любые идеи о причине или любая идея, которая может помочь мне создать набор тестов?