RFR (S) 8208172: SIGSEGV when owner of invokedynamic bootstrap method throws an exception - Symbol::increment_refcount()+0x0

coleen.phillimore at oracle.com coleen.phillimore at oracle.com
Tue Aug 21 23:17:32 UTC 2018



On 8/21/18 7:11 PM, Ioi Lam wrote:
> Hi Coleen,
>
> The fix looks good. I think it's defensive and can be easily back 
> ported independent of JDK-8209553 (ExceptionInInitializerError can 
> have a default detail message if the cause is given).

agree.
Thank you for the code review, Ioi!
Coleen
>
> Thanks
>
> - Ioi
>
>
>
> On 8/21/18 3:44 PM, coleen.phillimore at oracle.com wrote:
>>
>> Thanks, David.
>> Coleen
>>
>> On 8/20/18 10:25 PM, David Holmes wrote:
>>> On 21/08/2018 10:30 AM, coleen.phillimore at oracle.com wrote:
>>>>
>>>>
>>>> On 8/20/18 7:56 PM, David Holmes wrote:
>>>>> Hi Coleen,
>>>>>
>>>>> Looks good.
>>>>>
>>>>> On 21/08/2018 6:04 AM, coleen.phillimore at oracle.com wrote:
>>>>>> Summary: make table for resolution errors not always expect 
>>>>>> non-null message string.
>>>>>
>>>>> Thanks for fixing this. I'm unsure why we thought there had to be 
>>>>> a detail message? AFAIK there is no specified requirement for 
>>>>> this. Obviously having a detail message is the most common case.
>>>>>
>>>>> I'm also not clear why we only hit this in the indy bootstrap case?
>>>>
>>>> We always create LinkageErrors in the vm with a message, so we 
>>>> expected one to always be present.  The case where it's converted 
>>>> to ExceptionInInitializerError hadn't been seen, or expected to be 
>>>> missing this information.  It's probably possible to write a test 
>>>> to have LinkageError =>  EIIE without indy.
>>>
>>> The obvious direct example to produce EIIE from a static initializer 
>>> doesn't induce the problem. Interesting ...
>>>
>>>>>
>>>>> One minor comment:
>>>>>
>>>>> src/hotspot/share/classfile/resolutionErrors.cpp
>>>>>
>>>>> void ResolutionErrorEntry::set_message(Symbol* c) {
>>>>>     _message = c;
>>>>> +   if (_message != NULL) {
>>>>>       _message->increment_refcount();
>>>>> +   }
>>>>>   }
>>>>>
>>>>> Is there any reason not to move the assignment inside the if 
>>>>> clause as well?
>>>>>
>>>>
>>>> The C++ class isn't zero initialized, so we have to initialize the 
>>>> message to NULL.
>>>
>>> And no constructor that does the init either - okay.
>>>
>>> Thanks,
>>> David
>>>
>>>> Thanks,
>>>> Coleen
>>>>
>>>>> Thanks,
>>>>> David
>>>>>
>>>>>> Tested with hs-tier1-2, and all hotspot/jtreg/runtime tests, and 
>>>>>> test added.
>>>>>>
>>>>>> open webrev at http://cr.openjdk.java.net/~coleenp/8208172.01/webrev
>>>>>> bug link https://bugs.openjdk.java.net/browse/JDK-8208172
>>>>>>
>>>>>> Thanks,
>>>>>> Coleen
>>>>
>>
>



More information about the hotspot-runtime-dev mailing list