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

Lois Foltan lois.foltan at oracle.com
Wed Jul 10 20:29:38 UTC 2019


+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