Недопустимый доступ красной зоны стека от Java VM

Я пытаюсь выяснить, что может вызвать эту ошибку в Java:

Invalid access of stack red zone 0x115ee0ed0 rip=0x114973900

Кто-нибудь когда-нибудь сталкивался с этим сообщением об ошибке? Это буквально убивает JVM, и все там останавливается.

В настоящее время я использую эту версию Java: (на OS X 10.6)

java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03-219)
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-90, mixed mode)

Все, что я ищу, - это какое-то объяснение и советы о том, как избежать этого снова.

Спасибо заранее!

Ответы

Ответ 1

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

Каждый блок памяти, выделенный для приложение поставляется с ведущим и конечная "красная зона", которая является специальной подпись в памяти непосредственно перед сразу после того, как память, выделенная для выражение. Если приложение было для перезаписи за пределами этого региона подпись красной зоны будет перезаписаны. Затем сбои приложений, и вы получаете это abend при возврате памяти и ОС может проверять красные зоны.

Эти проблемы были обнаружены в Mac OSX, поэтому это может быть связано с проблемами загрузчика классов, когда класс не найден, а на mac osx, он был указан как доступ к красной зоне. Поэтому попробуйте с JDK 1.5 и посмотрите, можете ли вы воспроизвести проблему.

http://osdir.com/ml/java.objectweb.asm/2007-07/msg00004.html

http://wiki.geneontology.org/index.php/OEWG_20090505

http://forums.oracle.com/forums/thread.jspa?threadID=429325

Ответ 2

Я нашел ту же самую ошибку на OSX сегодня. Отслеживал его до того, что составляло stackOverlfow в entitybean

Ответ 3

Как уже упоминалось, это похоже на переполнение стека стелса. Увеличьте параметр JVM размера стека (-Xss). В моем случае переход от -Xss128k к -Xss1024k сделал трюк.

Ответ 4

В случае, если это полезно для кого-то еще. Я столкнулся с этой ошибкой, потому что, если плохая строка передана в JSONArray.fromObject(jsonString);

Я запускаю: java-версия "1.6.0_29" Java (TM) SE Runtime Environment (сборка 1.6.0_29-b11-402-10M3527) Java HotSpot (TM) 64-разрядная серверная VM (сборка 20.4-b02-402, смешанный режим) OSX 10.6.8

У jsonString было нулевое значение в самом начале, и ошибка была:

Недействительный доступ к красной зоне стека 0x10d446ba0 rip = 0x10c384b87

Ошибка шины

Это полностью убило jvm.

Как только я понял, что это была плохая строка json, исправление было легко.

Надеюсь, что это поможет кому-то.