Ошибка сегментации в JVM для переполнения стека, но только в VMWare - PullRequest
2 голосов
/ 26 февраля 2012

У нас есть приложение, работающее на JBoss.Это приложение имеет одну или две ошибки, которые приводят к бесконечности, вызывая исключение stackOverflowException.не оптимально, но не катастрофа.

Недавно мы попытались перейти на VMWare, и теперь такими же исключениями стали ошибки сегментации, которые приводят к отказу всего сервера приложений и JVM с ними.

это делает не любое стекOverflowException, и до сих пор я не смог создать простой кусок кода, который воспроизводит эту ошибку.

Есть идеи, почему эта разница может существовать?

Ответы [ 3 ]

1 голос
/ 03 апреля 2012

Кажется, это ошибка в Oracle / Sun JVM HotSpot, работающем в системе Linux.

Если вы попробуете приложение с помощью Oracle / Sun JVM, вы получите ошибку ошибки сегментации.С другой стороны, если вы попытаетесь запустить это же приложение с использованием OpenJDK, вы, вероятно, увидите ошибку StackOverflow.

0 голосов
/ 26 февраля 2012

Если JVM работает с ошибками и , ваше приложение не включает библиотеки нативного кода (называемые с использованием JNI или JNA), это свидетельствует о некоторой ошибке платформы.

В этом случае трудно точно определить, является ли настоящая ошибка в JVM или в VMWare.Я был бы склонен обвинить VMWare в том, что он не обеспечивает точную реализацию поведения «обычного» ПК.Однако возможно, что JVM неоправданно делает предположения о том, как будет вести себя процессор x86 или x86-64, когда переполняется стек Java и процессор пытается прочитать или записать защитную страницу стека.

0 голосов
/ 26 февраля 2012

Может быть разница в способе обработки памяти.Т.е. у вас другая версия ОС, или во взаимодействии с VMWare есть ошибка.

Вы правы, что это невозможно.Я также проверил бы, есть ли у вас текущая поддерживаемая версия Java.

...