Tiered compilation C2 compiler crash.
MacGregor, Duncan (GE Energy Management)
duncan.macgregor at ge.com
Wed Sep 17 09:30:57 UTC 2014
We’ve been seeing many cases of a C2 compiler crash which is happening on 8u20 with tiered compilation and heavy use of invokeDynamic. It is somewhat intermittent but the same method is always at the end of the compilation replay log, and it is always happening at the same spot on jvm.dll.
I’ve done some work on narrowing down the problem and it appears that it’s occurring in CallGenerator.for_method_handle_inline() line 856 where it retrieves the receiver type from the PhaseGVN. It assumes that the receiver is an ooopptr, but the type I’m getting back is actually an anyptr so the isa_oopptr() method returns null, and I then get an access violation at line 865 when the code attempts to call speculate_type().
Is it ever valid for a non-oop ptr to be the receiver type, and if not does anybody have a good suggestion for where to try and catch this type being put into the PhaseGVN?
More information about the hotspot-compiler-dev