Unexplained hangs on Windows arm64
Fabian Meumertzheim
fabian at buildbuddy.io
Thu Feb 5 23:40:09 UTC 2026
Hi everyone,
I'm currently investigating indefinite hangs of the build system Bazel that
occur only on Windows arm64 (
https://github.com/bazelbuild/bazel/issues/28520) - Linux, macOS as well as
Windows x64 are unaffected. Bazel runs itself via an embedded JDK 25 and
I've been able to reproduce the same hangs on 25.0.2.
The hangs occur while Bazel downloads external dependencies using
HttpURLConnection in virtual threads created by a
VirtualThreadPerTaskExecutor. I captured JSON thread dumps (
https://github.com/user-attachments/files/25097968/threads.json and
https://github.com/user-attachments/files/25102540/threads2.json are
examples, but I can provide more) which all seem to have the following in
common:
1. Virtual threads are blocked in either very short synchronized blocks
(e.g. SynchronizedMap methods) or WEPoll#ctl.
2. There are enough carrier threads available throughout (the machine has 8
cores).
I don't know how to explain why there is no progress in these situations -
the thread dumps don't seem to point to an obvious deadlock, but the
program never makes progress again after getting into this state.
WEPoll#ctl led me to think that this may be related to a subtle deadlock
issue affecting the Go runtime (
https://www.ntkernel.com/a-rare-cancelioex-hang-in-go-on-windows/), but I
then found thread dumps such as the second one above that don't include an
such frames.
Is there anything special about the Loom impl on Windows arm64 that could
explain this behavior?
Fabian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/loom-dev/attachments/20260206/a4544821/attachment.htm>
More information about the loom-dev
mailing list