Tiered compilation C2 compiler crash.
vladimir.kozlov at oracle.com
Wed Sep 17 16:53:11 UTC 2014
In debug version of VM there is Node::dump(n) method which prints ideal nodes.
Can you show output of call receiver_node->dump(1)?
And also output of gvn.type(receiver_node)->dump() to see type in IGVN.
And target->print() which prints method descriptor.
On 9/17/14 2:30 AM, MacGregor, Duncan (GE Energy Management) wrote:
> 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?
> Thanks, Duncan.
More information about the hotspot-compiler-dev