Java 21 clinit deadlock

Simone Bordet simone.bordet at gmail.com
Fri Sep 15 07:00:19 UTC 2023


David,

On Thu, Sep 14, 2023 at 4:33 AM David Holmes <david.holmes at oracle.com> wrote:
> I've created a draft PR here:
>
> https://github.com/openjdk/jdk/pull/15732
>
> can you apply that patch, build and re-test? Hopefully that will show
> which thread is doing the missing initialization.

We have attached the logs to the pull request above.

Seems like a classic deadlock:

'[8.061s][debug][class,init] Thread ForkJoinPool-1-worker-1 is
initializing org.eclipse.jetty.http.HttpFields'.
...
'[8.113s][debug][class,init] Thread ForkJoinPool-1-worker-2 is
initializing org.eclipse.jetty.http.MutableHttpFields'.
'[8.113s][debug][class,init] Thread ForkJoinPool-1-worker-2 waiting
for initialization of org.eclipse.jetty.http.HttpFields by thread
ForkJoinPool-1-worker-1'.
...
'[8.117s][debug][class,init] Thread ForkJoinPool-1-worker-1
recursively initializing org.eclipse.jetty.http.HttpFields'.
'[8.117s][debug][class,init] Thread ForkJoinPool-1-worker-1 waiting
for initialization of org.eclipse.jetty.http.MutableHttpFields by
thread ForkJoinPool-1-worker-2'.

It is peculiar that we already get this deadlock for the same classes.
Perhaps we are using a pattern in the code that makes it more likely to happen?

Thanks!

-- 
Simone Bordet
---
Finally, no matter how good the architecture and design are,
to deliver bug-free software with optimal performance and reliability,
the implementation technique must be flawless.   Victoria Livschitz


More information about the core-libs-dev mailing list