|
Quick Lists
|
|
Bug ID:
|
6758445
|
|
Votes
|
0
|
|
Synopsis
|
loop heads that are exception entry points can crash during count_edges/mark_loops
|
|
Category
|
hotspot:compiler1
|
|
Reported Against
|
|
|
Release Fixed
|
hs14(b08),
hs11(b17) (Bug ID:2169325)
, 7(b41) (Bug ID:2170007)
, 6u12(b01) (Bug ID:2170221)
|
|
State
|
10-Fix Delivered,
bug
|
|
Priority:
|
3-Medium
|
|
Related Bugs
|
|
|
Submit Date
|
10-OCT-2008
|
|
Description
|
Ok, I've just attached the files...too complicated to find somewhere to put them..
test.class is the class "ruby.test". jruby.jar is JRuby's jar. Run with:
java -client -cp jruby.jar:. ruby.test
(assuming you put the test.class in ./ruby)
It should crash under any version of JDK 6 client compiler.
I've also attached the Ruby source. If you want to just run it directly, and JRuby will compile it before run, do it like this:
java -jar jruby.jar org.jruby.Main test.rb
- Charlie
$ok = true
def getc
if $ok
$ok = false
nil
else
$ok = true
50
end
end
def gets
c = getc or return
l = ""
begin
l.concat c unless c == "\r"
break if c == "\n"
end while c = getc
l
end
loop { gets }
Posted Date : 2008-10-10 20:48:56.0
|
|
Work Around
|
N/A
|
|
Evaluation
|
So I'm looking at this crash and I'm seeing asserts that are unhappy about some loop structures that are being formed with exception handlers. I think it's a throw of a BreakJump that goes to a handler which jumps into a loop. I'm guessing that the problem is that it's producing a control structure you couldn't make from normal Java source. In Java it would/might require multiple separate exception ranges.
I think it's something like this:
try
if (something) throw BreakJump
loop:
.....
catch (BreakJump bj)
goto loop
You'd have to build a structure like that in java source very differently and I think we'd handle that correctly but I don't think we've seen anything structured like this before. We can probably fix this but you might want to think about a workaround given how long it takes for releases to make it into users hands. I'll look into a fix for it. How do I get a version of the class file that was generated? The test.class you sent me appeared to be corrupted in some way.
*** (#1 of 1): [ UNSAVED ] xxxxx@xxxxx
Posted Date : 2008-10-10 20:48:57.0
http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/334969144810
Posted Date : 2008-11-12 16:15:36.0
|
|
Comments
|
PLEASE NOTE: JDK6 is formerly known as Project Mustang
|
|
|
 |