RFR 8226798: JVM crash in klassItable::initialize_itable_for_interface(int, InstanceKlass*, bool, Thread*)

Harold Seigel harold.seigel at oracle.com
Wed Jul 10 20:30:55 UTC 2019


Thanks Lois!

Harold

On 7/10/2019 4:29 PM, Lois Foltan wrote:
> +1.
> Lois
>
> On 7/10/2019 3:04 PM, Karen Kinnear wrote:
>> Looks good to me.
>>
>> Thank you very much,
>> Karen
>>
>>> On Jul 10, 2019, at 2:34 PM, Harold Seigel <harold.seigel at oracle.com 
>>> <mailto:harold.seigel at oracle.com>> wrote:
>>>
>>> Hi Karen,
>>>
>>> Thanks for looking at this.
>>>
>>> Please review this updated webrev that includes your suggestions.
>>>
>>> http://cr.openjdk.java.net/~hseigel/bug_8226798.2/webrev/index.html 
>>> <http://cr.openjdk.java.net/~hseigel/bug_8226798.2/webrev/index.html>
>>> Thanks! Harold
>>>
>>> On 7/10/2019 12:22 PM, Karen Kinnear wrote:
>>>> Harold,
>>>>
>>>> Thank you for figuring out a fix for this. The code looks good for 
>>>> the fix. Thank you
>>>> for the assertions.
>>>>
>>>> A suggestion on the code:
>>>>
>>>> After the initial large loop, instead of if 
>>>> (!found_pkg_prvt_method) { do the check }
>>>> Replace that with
>>>>
>>>> "If found_pkg_prvt_method is set, then the ONLY matching method in the
>>>> superclasses is package private in another package. That matching 
>>>> method will
>>>> prevent a miranda vtable entry from being created. Because the 
>>>> target method can not
>>>> override the package private method in another package, then it 
>>>> needs to be the root
>>>> for its own vtable entry."
>>>>    if (found_pkg_prvt_method) {
>>>>       return true;
>>>>    }
>>>>
>>>> Then leave the old code and comment alone.
>>>>
>>>> ——
>>>> Suggestion on the first set of comments:
>>>>
>>>> “But, that package private method does “override” any matching 
>>>> methods in super interfaces,
>>>> so there will be no miranda vtable entry created. So, set flag to 
>>>> TRUE  for use below, in case there are no
>>>> methods in super classes that this target method overrides."
>>>>
>>>> thank you so much,
>>>> Karen
>>>>
>>>>> On Jul 10, 2019, at 8:09 AM, Harold Seigel 
>>>>> <harold.seigel at oracle.com> <mailto:harold.seigel at oracle.com> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> Please review this JDK-14 fix for 8226798.  At class load time, 
>>>>> the JVM was incorrectly calculating the size of a class's vtable 
>>>>> in cases where a super class, in another package, contained a 
>>>>> package private method that was also in a super interface.
>>>>>
>>>>> Open Webrev: 
>>>>> http://cr.openjdk.java.net/~hseigel/bug_8226798/webrev/index.html 
>>>>> <http://cr.openjdk.java.net/~hseigel/bug_8226798/webrev/index.html>
>>>>>
>>>>> JBS Bug: https://bugs.openjdk.java.net/browse/JDK-8226798 
>>>>> <https://bugs.openjdk.java.net/browse/JDK-8226798>
>>>>>
>>>>> The fix was regression tested by running Mach5 tiers 1 and 2 tests 
>>>>> and builds on Linux-x64, Solaris, Windows, and Mac OS X, by 
>>>>> running Mach5 tiers 3-5 tests on Linux-x64, and JCK lang and VM 
>>>>> tests on Linux-x64.
>>>>>
>>>>> Thanks, Harold
>>>>>
>


More information about the hotspot-runtime-dev mailing list