RFR(XS): 8144852: Corrupted oop in nmethod

Dean Long dean.long at oracle.com
Thu Dec 17 02:15:10 UTC 2015


Thanks Ioi for looking at this.

Vladimir, are you OK with keeping the changes in method?  If so, I will 
push what I have.

dl

On 12/16/2015 3:38 PM, Ioi Lam wrote:
> Currently non_oop_word is used only in the nmethod code. If this value 
> is assigned to an oop or a metadata* elsewhere we would probably see 
> massive crashes. Adding non_oop_word to oopDesc::print_*_on would 
> imply that it's OK to assign this value in a more general context, 
> which is not true.
>
> So I would suggest keeping knowledge of non_oop_word inside nmethod 
> for now, and we can revisit this if other places start to use 
> non_oop_word.
>
> Thanks
> - Ioi
>
> On 12/16/15 12:41 PM, Dean Long wrote:
>> Ping.
>>
>> Could runtime folks please comment on Vladimir's suggestion to have 
>> oopDesc::print_*_on and
>> Metadata::print_*_maybe_null support Universe::non_oop_word() values 
>> without crashing, or if I should keep this change in nmethod only.
>>
>> thanks,
>>
>> dl
>>
>> On 12/11/2015 11:18 AM, Dean Long wrote:
>>> [adding hotspot-runtime-dev]
>>>
>>> On 12/11/2015 3:49 AM, Vladimir Ivanov wrote:
>>>> Dean, thanks for taking care of it.
>>>>
>>>> Can oopDesc::print_value_on and print_value_on_maybe_null be 
>>>> enhanced instead to handle non_oop_word case (in addition to NULL 
>>>> case)?
>>>>
>>>
>>> I thought of that, but didn't want to add 
>>> print_value_on_maybe_null_or_non_oop :-)
>>>
>>> If you feel strongly about that, then I should probably get input 
>>> from runtime too, since I think they own that code.
>>>
>>>> Also, the following is slightly misleading since metadata pointers 
>>>> aren't oops:
>>>>  void nmethod::print_recorded_metadata() {
>>>> +    if (m == (Metadata*)Universe::non_oop_word()) {
>>>> +      tty->print("non-oop word");
>>>>
>>>
>>> Would "non-metadata word" be better?
>>>
>>> dl
>>>
>>>> Best regards,
>>>> Vladimir Ivanov
>>>>
>>>> On 12/11/15 6:36 AM, Dean Long wrote:
>>>>> https://bugs.openjdk.java.net/browse/JDK-8144852
>>>>> http://cr.openjdk.java.net/~dlong//8144852/webrev/
>>>>>
>>>>> The fix for [1] introduced new functions nmethod::print_recorded_oops
>>>>> and nmethod::print_recorded_metadata that print all oop and metadata
>>>>> values in an nmethod.  Currently NULL values are handled OK, but
>>>>> Universe::non_oop_word values cause a crash.
>>>>>
>>>>> (This bug is marked confidential because it was reported against 
>>>>> one of
>>>>> our closed ports.)
>>>>>
>>>>> dl
>>>>>
>>>>> [1]     JDK-8072008: Emit direct call instead of linkTo* for 
>>>>> recursive
>>>>> indy/MH.invoke* calls
>>>
>>
>



More information about the hotspot-runtime-dev mailing list