Недопустимый доступ красной зоны стека от 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, исправление было легко.
Надеюсь, что это поможет кому-то.