On Tue, 29 Apr 2025 17:02:38 GMT, kabutz <d...@openjdk.org> wrote:

> In 2015, Google discovered a rare disastrous classloading bug in first call 
> to LockSupport.park() that occurred in the AppClassLoader using the Java 7 
> ConcurrentHashMap, which used ReentrantLock for the synchronization.
> 
> Since then, the recommended fix for this bug seems to be this code snippet in 
> any class that directly calls LockSupport.park():
> 
> 
> static {
>     // Prevent rare disastrous classloading in first call to LockSupport.park.
>     // See: https://bugs.openjdk.java.net/browse/JDK-8074773
>     Class<?> ensureLoaded = LockSupport.class;
> }
> 
> 
> Since the bug was logged, we have seen new classes in the JDK that call 
> LockSupport.park(), but that do not have this code snippet. For example:
> 
> sun.nio.ch.Poller
> jdk.internal.misc.ThreadFlock
> java.util.concurrent.ThreadPerTaskExecutor
> 
> It should probably also be in:
> 
> java.util.concurrent.Exchanger
> 
> Considering how hard this bug is to detect and solve, it would probably be 
> safer to add the code snippet into these newer classes.

What is the potential downside of adding the static block to make sure the 
class is loaded?

-------------

PR Comment: https://git.openjdk.org/jdk/pull/24952#issuecomment-2839855294

Reply via email to