Tiered compilation C2 compiler crash.
MacGregor, Duncan (GE Energy Management)
duncan.macgregor at ge.com
Fri Sep 19 18:45:52 UTC 2014
Sorry for the delay, lots of other stuff in progress right now. The
fastdebug build with asserts was too slow to start the application with,
so I made a debug build with asserts disabled.and got the following.
--Node dump--
162 ConP === 0 [[ 163 171 218 265 272 286 311 359 399
408 474
481 525 570 577 591 615 663 703 711 468 739 754 770 769
801 857
865 865 1457 1467 1475 1892 1902 1910 2278 2360 2368 2404
2411 24
33 2470 2478 2485 2511 2517 2396 2653 2732 2740 2775 2782 2804
2841
2849 2856 2882 2888 2767 3079 3087 3518 3525 3568 3613 3620
3634
3658 3706 3745 3753 3817 3824 3867 3912 3919 3933 3957 4005
4044 40
52 3811 4080 4093 4107 4106 4137 4297 4305 4701 4788 4796 4831
4838
4860 4899 4907 4914 4942 4948 4823 5176 5186 5194 5653 5660
5703
5748 5755 5769 5793 5841 5880 5888 5952 5959 6002 6047 6054
6068 60
92 6140 6179 6187 5946 6215 6228 6242 6241 6272 6434 6444 6452
6911
6921 6929 7226 7224 7239 7239 7246 7317 7395 7403 7439 7446
7468
7505 7513 7520 7546 7552 7431 7750 7760 7768 8187 8194 8237
8282 82
89 8303 8327 8375 8414 8422 8486 8493 8536 8581 8588 8602 8626
8674
8713 8721 8480 8749 8762 8776 8775 8806 8954 8964 8972 9429
9439
9447 9744 9742 9756 9756 9763 9834 9912 9920 9956 9963 9985
10022 1
0030 10037 10063 10069 9948 10255 10265 10273 10731 10741 10749
11094
11138 11145 11066 11042 11173 11037 11180 11188 11190 11190
11192 1
1192 11187 11182 11200 11201 11209 11211 11215 11233 11235 11238
]] #
NULL
--Type dump--
NULL
--Targer print--
<ciMethod name=getWrappedSlotProvider
holder=com/gesmallworld/magik/runtime/obje
cts/SlottedProxy
signature=(Ljava/lang/Integer;)Lcom/gesmallworld/magik/runtime/
objects/SlotProvider; loaded=true arg_size=2 flags=public ident=1407
address=0x0
00000005d7c3f70>
>From grepping through type.cpp I¹m guessing the type is a TypePtr of some
form, but dump() doesn¹t output much in the null case.
One of my colleagues has also reported this issue with
-XX:-TieredCompilation, and the error log shows the same offsets in
jvm.dll so I¹m guessing tiered comp just lets me provoke the issue more
quickly. I¹ve now found a faster route through the application to trigger
this, so it¹s going to be much less painful to run any further tests you
suggest.
Cheers,
Duncan.
On 17/09/2014 17:53, "Vladimir Kozlov" <vladimir.kozlov at oracle.com> wrote:
>Hi Duncan
>
>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.
>
>Thanks,
>Vladimir
>
>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
mailing list