开发者

Invalid memory access of location in Java

I've been working on a Java project for year. My code had been working fine for months. A few days ago I upgraded the Java SDK to the newest version 1.6.0_26 on my Mac (Snow Leopard 10.6.8). After the upgrade, something very weird happens. When I run some of the classes, I get this error:

Invalid memory access of location 0x202 rip=0x202

But, if I run them with -Xint (interpreted) they work, slow but work fine. I get that problem in classes where I use bitwise operators (bitboards for the game Othello). I can't put any code here because I don't get an error, exception or 开发者_开发知识库something similar. I just get that annoying message.

Is it normal that the code doesn't run without -Xint but it works with it? What should I do?

Thanks in advance


When a JVM starts crashing like that, it is a sign that something has broken the JVM's execution model.

Does your application include any native code? Does it use any 3rd-party libraries with native code components? If neither is true, then the chances are that this is a bug in the Apple port of the JVM. It could be a JIT compiler bug, or a bug in some JVM native code library.

What can you do about a bug like that?

Not a lot.

  • Reduce your application by progressively chopping out bits until you have a small testcase that exhibits the problem.
  • Based on the testcase, see if there's some empirical way to avoid the problem.
  • Submit a bug report to Apple with the testcase.


I just came across this situation and it turned out to be related to a piece of code that was serializing a JSON object with a cyclic reference to itself. I removed the cycle and the error went away. I suspect this is related to a memory overflow error that is now handled differently by newer JVMs on Mac OSX. In this case, I was running Mac OSX 10.7.

For completeness the errors I was receiving were:

Invalid access of stack red zone 0x10e586d30 rip=0x10daabba6
Bus error: 10

And:

Invalid memory access of location 0x10b655890 rip=0x10a8baba6
Segmentation fault: 11


Also verify that you are building the GUI on the event dispatch thread and never updating a GUI component from any other thread.

Related errors are notoriously hard to reproduce, but the change associated with altered timing is suggestive.


Please check if /etc/hosts is empty and verify that it include these configurations :

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0     localhost
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜