RFR: 8212682: Avoid holding Compile_lock when blocking for GC in ObjArrayKlass::allocate_objArray_klass()
dean.long at oracle.com
dean.long at oracle.com
Tue Oct 23 20:27:12 UTC 2018
Can allocate_objArray_klass() end up calling
SystemDictionary::add_to_hierarchy()? If so, then you'll end up locking
Compile_lock anway, but in the wrong order with respect to MultiArray_lock.
dl
On 10/23/18 7:59 AM, Erik Österlund wrote:
> Hi,
>
> We occasionally blockingly wait for GC in allocations in
> ObjArrayKlass::allocate_objArray_klass(), while holding the Compile_lock.
> This is problematic for concurrent class unloading that needs to hold
> that lock in the unloading path. This introduces a potential deadlock
> situation.
>
> After staring enough at this code together with help from Coleen, I
> have convinced myself that the Compile_lock is in fact not needed in
> this path, and there is nothing to my knowledge it actually protects
> here. The vague comment next to the lock suggests its purpose is to
> protect vtable stubs. But it doesn't. There is a VtableStubs_lock for
> that, and I find no traces if the Compile_lock having anything to do
> with that.
>
> Coleen helped me trying to trace down where this locking code came
> from. It takes us back to before anyone was around, and does not seem
> to have changed in the past 2 decades, and its origins are a bit
> unclear. The theory is that perhaps vtable stubs used to be protected
> by the Compile_lock in ancient times, and the locking code is still
> around because nobody dared to touch it.
>
> Since both code analysis and mach5 suggest there is no reason for this
> lock to be held here, I propose to remove it with this patch.
>
> If anyone that has been around for more than 2 decades in HotSpot
> happens to know the reason why this locking was introduced, any
> commentary around that would be very appreciated.
>
> Webrev:
> http://cr.openjdk.java.net/~eosterlund/8212682/webrev.00/
>
> Bug:
> https://bugs.openjdk.java.net/browse/JDK-8212682
>
> Thanks,
> /Erik
More information about the hotspot-dev
mailing list