RFR: 8234466: Class loading deadlock involving X509Factory#commitEvent()

Seán Coffey sean.coffey at oracle.com
Mon Jan 13 10:28:18 UTC 2020


some off line comments suggested that I could move the jar 
initialization checks to the EventHelper class. With that in place, the 
EventHelper utility class should never initialize the logging framework 
early during jar initialization.

http://cr.openjdk.java.net/~coffeys/webrev.8234466.v4/webrev/

regards,
Sean.

On 16/12/2019 14:15, Seán Coffey wrote:
> The recent crypto event logging mechanism (JDK-8148188) has introduced 
> a regression whereby the System Logger may be invoked too early in the 
> bootstrap phase. This causes issue when JarFile objects are locked by 
> JarFile verifier initialization code. The logging work records an X509 
> Certificate which is used during the jar file 
> verification/initialization phase and hence leads to an early 
> System.Logger call.
>
> One thread invokes the initialization of the Logger framework via 
> ServiceLoader and waits to lock a JarFile in use via another thread. 
> Unfortunately that other thread is also waiting for the System Logger 
> to initialize. For now, I think we can avoid the early Logger 
> initialization via use of a ThreadLocal. I've tried reproducing the 
> reported issue through manual and automated tests but to no avail. 
> I've added a new ServiceLoader test which has concurrent threads. One 
> is loading providers and another is initializing JarFile verifiers. 
> Hope it helps improve code coverage for the future.
>
> JBS record: https://bugs.openjdk.java.net/browse/JDK-8234466
> webrev : http://cr.openjdk.java.net/~coffeys/webrev.8234466/webrev/
>



More information about the security-dev mailing list