从Java VM无效访问堆栈红区

时间:2009-10-01 03:35:59

标签: java jvm jvm-hotspot red-zone

我正在试图弄清楚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)

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

提前致谢!

4 个答案:

答案 0 :(得分:7)

我今天在OSX上发现了同样的错误。跟踪它到了实体bean中的stackOverlfow

答案 1 :(得分: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

答案 2 :(得分:2)

如前所述,这似乎是隐形堆栈溢出。 Bump up堆栈大小JVM参数(-Xss)。就我而言,从-Xss128k转到-Xss1024k就可以了。

答案 3 :(得分:2)

如果这对其他人有帮助。 我遇到了这个错误,因为如果一个错误的字符串传递给JSONArray.fromObject(jsonString);

我正在跑步: java版“1.6.0_29” Java(TM)SE运行时环境(版本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字符串,修复很容易。

希望能有所帮助。