[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-hotspot-runtime-dev
Subject:    Re: (11) RFR (S) JDK-8205509: assert(_name_and_id != 0LL) failed: encountered a class loader null na
From:       Lois Foltan <lois.foltan () oracle ! com>
Date:       2018-06-25 14:13:51
Message-ID: eb2334bb-ea84-79cc-6225-cdd503b47f3d () oracle ! com
[Download RAW message or body]

Thanks Coleen!
Lois

On 6/25/2018 10:12 AM, coleen.phillimore@oracle.com wrote:
> 
> 
> Lois, This looks good!
> Thanks,
> Coleen
> 
> On 6/22/18 7:39 PM, Lois Foltan wrote:
> > On 6/22/2018 7:28 PM, coleen.phillimore@oracle.com wrote:
> > 
> > > 
> > > Lois,
> > > This looks good!
> > > 
> > > http://cr.openjdk.java.net/~lfoltan/bug_jdk8205509/webrev/src/hotspot/share/classfile/classLoaderData.cpp.udiff.html \
> > >  
> > > 
> > > if (!h_class_loader.is_null()) {
> > > _class_loader = _handles.add(h_class_loader());
> > > }
> > > 
> > > + if (!h_class_loader.is_null()) {
> > > + _class_loader_klass = h_class_loader->klass();
> > > + }
> > > +
> > > 
> > > Can you put the _class_loader_klass under the if statement above it?
> > > 
> > > + } else {
> > > + return _class_loader_klass->external_name();
> > > 
> > > Can you add short comment:   // May be called in a race before 
> > > _name_and_id is initialized.
> > > 
> > > Unfortunately, there isn't a good way to assert this (other than 
> > > maybe a flag which would serve the same purpose as a null 
> > > _name_and_id), and this code path is sensitive to safepoints because 
> > > the link from class_loader to ClassLoaderData and the addition of 
> > > ClassLoaderData to the CLDG needs to appear atomic.
> > Hi Coleen,
> > 
> > Thanks for the review, good comments.   They all have been addressed 
> > and more testing is in progress.   See updated webrev at:
> > 
> > http://cr.openjdk.java.net/~lfoltan/bug_jdk8205509.1/webrev/
> > 
> > Lois
> > 
> > > 
> > > Thanks for the speedy fix.
> > > Coleen
> > > 
> > > On 6/22/18 7:00 PM, Lois Foltan wrote:
> > > > Please review the following change to address a hs-tier5 test 
> > > > failure. The recent change for JDK-8202605 aggravated an existing 
> > > > race condition within ClassLoaderDataGraph::add() where a given 
> > > > class loader's ClassLoaderData structure is added to the 
> > > > ClassLoaderDataGraph prior to full initialization of the CLD's 
> > > > _class_loader_klass, _name and _name_and_id fields within 
> > > > ClassLoaderData::initialize_name_and_klass.   To ensure that methods 
> > > > loader_name() and loader_name_and_id() always provide a string for 
> > > > the class loader name, the fix involved moving the field, 
> > > > _class_loader_klass, to the ClassLoaderData's constructor where if 
> > > > _name and/or _name_and_id fields are null, a reasonable 
> > > > _class_loader_klass's external_name() can be provided.
> > > > 
> > > > open webrev http://cr.openjdk.java.net/~lfoltan/bug_jdk8205509/webrev/
> > > > bug link at https://bugs.openjdk.java.net/browse/JDK-8205509
> > > > 
> > > > Testing: hs-tier(1-2), jdk-tier(1-3) complete
> > > > hs-tier3-5 in progress
> > > > --test-repeat 50 ran for tier1 platforms of test 
> > > > jdk/java/lang/instrument/DaemonThread/TestDaemonThread.java
> > > > 
> > > > Thanks,
> > > > Lois
> > > 
> > 
> 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic