RFR (S): JDK-8152949: Jigsaw crash when Klass in _fixup_module_field_list is unloaded
Lois Foltan
lois.foltan at oracle.com
Mon Apr 18 11:31:08 UTC 2016
On 4/18/2016 3:06 AM, Stefan Karlsson wrote:
> On 2016-04-15 21:45, Alan Bateman wrote:
>>
>> On 15/04/2016 18:02, Lois Foltan wrote:
>>>
>>> Hi Stefan,
>>>
>>> In start up before module system initialization in complete I
>>> believe the VM is single threaded, so the increment/decrement
>>> reference counts do not need to be atomic. Adding it is a defensive
>>> move in case the reference count is ever used passed start up in the
>>> future. It kind of does seem a bit excessive, sounds like you agree?
>> There will be a number of threads running before the base module is
>> defined to the VM. As things stand the the java threads at this point
>> will be the Common-Cleaner, Finalizer, Reference Handler and Signal
>> Handler.
>
> So, are you saying that we need the atomics?
>
> The java_lang_Class::create_mirror function isn't multi-thread safe,
> and must already be guarded by a lock (SystemDictionary_lock AFAICT).
> The increment in Unsafe_DefineAnonymousClass0, will only be done once,
> for the single InstanceKlass instance in the CLD. And all reads of
> _keep_alive from the GC are done during safepoints.
The anonymous class is inserted in the fixup mirror and fixup module
lists during java_lang_Class::create_mirror() before it is made public
or "published" as loaded. So the two instances where the reference
count is incremented, Unsafe_DefineAnonymousClass0 and in
java_lang_Class::create_mirror(), are guarded by a lock as well as the
decrement in Unsafe_DefineAnonymousClass0. No other thread has access
to the class during this time, as it is being loaded.
>
> How does ModuleEntryTable::patch_javabase_entries guard against
> concurrent inserts into the _fixup_module_field_list list?
That leaves the decrement in ModuleEntryTable::patch_javabase_entries()
as possibly unguarded. This only occurs when the VM is called to define
the module java.base. I believe this should be okay but will double check.
Thanks,
Lois
>
> thanks,
> StefanK
>
>
>>
>> -Alan
>
More information about the hotspot-dev
mailing list