从Java VM无效访问堆栈红区

Mal*_*eur 15 java jvm jvm-hotspot red-zone

我试图弄清楚在Java中可能导致此错误的原因:

Invalid access of stack red zone 0x115ee0ed0 rip=0x114973900
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过这个错误信息?它实际上是在杀死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)
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是关于如何避免再次发生这种情况的某种解释和提示.

提前致谢!

Mik*_*rth 7

我今天在OSX上发现了同样的错误.跟踪它到了entitybean中的stackOverlfow


rjo*_*shi 5

在不查看代码的情况下,很难说出导致错误的原因,但这里有关于红区的解释以及很少讨论问题的链接.

分配给应用程序的每个内存块都带有一个前导和尾随的"redzone",它是在分配给应用程序的内存之前和之后的内存中的特殊签名.如果应用程序要覆盖此区域之外,则会覆盖红色区域签名.然后在应用程序崩溃后,当内存返回时,你会得到这个异常终止,操作系统可以检查红色区域.

这个问题已在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

  • 今天看到这个.原来是堆栈溢出.显然,现在您无法保证从无限递归方法调用中获取StackOverflowException. (3认同)