[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-hotspot-runtime-dev
Subject: Re: RFR(S) 8140665: SIGSEGV when a primitive type's class is used as the host class in a call to Def
From: harold seigel <harold.seigel () oracle ! com>
Date: 2016-03-22 20:20:48
Message-ID: 56F1A920.6090508 () oracle ! com
[Download RAW message or body]
Thanks Karen!
Harold
On 3/22/2016 4:20 PM, Karen Kinnear wrote:
> Agree with Coleen on both points.
>
> thanks,
> Karen
>
> > On Mar 22, 2016, at 11:59 AM, harold seigel <harold.seigel@oracle.com> wrote:
> >
> > Hi Coleen,
> >
> > Thanks for the review. I'll add the comment.
> >
> > I don't know about future plans for accessing Unsafe.
> >
> > Harold
> >
> > On 3/22/2016 11:36 AM, Coleen Phillimore wrote:
> > > Hi Harold, This looks good but a single line comment that primitive types have \
> > > NULL Klass* fields in their java.lang.Class instances would be helpful, \
> > > especially if this is changed in the future.
> > > Since the hostClass is checked in the caller, my vote is to not add another \
> > > check in the vm.
> > > In the test, is there going to be another way to get to Unsafe in the future, \
> > > or present?
> > > Thanks,
> > > Coleen
> > >
> > >
> > > On 3/22/16 11:19 AM, harold seigel wrote:
> > > > Hi Karen,
> > > >
> > > > Thanks for looking at the changes. The JDK caller of \
> > > > Unsafe_DefineAnonymousClass_impl() is in \
> > > > java.base/share/classes/jdk/internal/misc/Unsafe.java. It checks for NULL \
> > > > args and throws NPE:
> > > > public Class<?> defineAnonymousClass(Class<?> hostClass, byte[] data, \
> > > > Object[] cpPatches) { if (hostClass == null || data == null) {
> > > > throw new NullPointerException();
> > > > }
> > > > return defineAnonymousClass0(hostClass, data, cpPatches);
> > > > }
> > > >
> > > > If somehow a null host_class was passed to Unsafe_DefineAnonymousClass_impl() \
> > > > then it would probably seg fault in product. Perhaps that's okay because it \
> > > > is an Unsafe_... API.
> > > > Thanks, Harold
> > > >
> > > > On 3/22/2016 10:57 AM, Karen Kinnear wrote:
> > > > > Harold,
> > > > >
> > > > > Thank you for fixing this. Looks good.
> > > > >
> > > > > One question -
> > > > >
> > > > > 1. If you were to pass in a null host_class in product - what happens?
> > > > > The way I read the resolve_non_null, it asserts in debug that you did not \
> > > > > pass in a null, which suggests to me that it assumes we have already made \
> > > > > that check. I would expect and if (host_class == NULL) || … 0> \
> > > > > IllegalArgumentException ?
> > > > > thanks,
> > > > > Karen
> > > > >
> > > > > > On Mar 22, 2016, at 10:23 AM, harold seigel <harold.seigel@oracle.com> \
> > > > > > wrote:
> > > > > > Hi,
> > > > > >
> > > > > > Please review this small change to fix bug 8140665.
> > > > > >
> > > > > > Instead of asserting or getting a SIGSEGV when trying to define an \
> > > > > > anonymous class when the host class is a primitive type, this fix throws \
> > > > > > an IllegalArgumentException.
> > > > > > Webrev: http://cr.openjdk.java.net/~hseigel/bug_8140665/
> > > > > >
> > > > > > JBS Bug: https://bugs.openjdk.java.net/browse/JDK-8140665
> > > > > >
> > > > > > The fix was tested with JCK Lang and VM java_lang tests, the UTE \
> > > > > > non-collated quick tests, and the hotspot, JDK vm, java/io, java/lang, \
> > > > > > java/util and JFR JTreg tests, and the test included in this RFR.
> > > > > > Thanks, Harold
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic