(11) RFR (S) JDK-8205509: assert(_name_and_id != 0LL) failed: encountered a class loader null name and id
Lois Foltan
lois.foltan at oracle.com
Fri Jun 22 23:39:30 UTC 2018
On 6/22/2018 7:28 PM, coleen.phillimore at 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
>
More information about the hotspot-runtime-dev
mailing list