|
I was able to reproduce this with SoyLatte JDK 6 (1.6.0_03-p3) on OS X. The problem seems to be in the "client" JIT compiler in the JVM, which we've had some trouble with before. Segfaults in the JVM are always the JVM's fault, but there may be something we can do to work around it. In the short term, you can use the "server" VM by passing --server (or -server to the "java" command) which does not crash. I will file a bug with the Hotspot devs. Managed to reduce it to this: while (true)
100.times {|e|}
end
I talked with the Hotspot guys and they confirmed it's the same cause as an issue we reported last spring. That issue is fixed in all the various codebases, but I don't believe those fixes have propagated to any released version of Hotspot yet. The bug ID is 6758445, though I couldn't find it in the public bug listings. I'm looking into the generated bytecode and will hopefully have it repaired soon. I have committed a fix in r7870 that resolves this and cleans up/improves the "while" logic that was the source of the problem. I'm going to add a test that exhibits the crash before marking this resolved. Hmm, I could not reduce this to a case that wouldn't slow down the build substantially. Short to medium runs of a fixnum-delimited loop do not appear to crash, and the true version would obviously run forever. So I think we'll have to go without a test for this one. I will, however, ping the ASM guys about possibly adding this as a verification. That would help reduce the likelihood of it coming up in the future.
Charles Oliver Nutter made changes - 11/Oct/08 05:20 PM
Charles Oliver Nutter made changes - 12/Jan/09 04:28 PM
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
I forgot to mention, this is with build 7858