julia
42430f9d - safepoint: Wake the event loop when a GC worker stops the world (#63763)

Commit
6 days ago
safepoint: Wake the event loop when a GC worker stops the world (#63763) `jl_gc_wait_for_the_world` skipped waking libuv when there is only one thread, assuming the caller is that thread. Under MMTk the world is stopped from a GC worker; since mmtk/mmtk-core#1550, ConcurrentImmix's final-mark pause is requested by the last worker to park once concurrent marking drains. A lone mutator idle in `uv_run` (GC-unsafe) then never reaches the safepoint until some unrelated event wakes it. In the `^C in the REPL (pty)` test this deadlocks: the REPL sleeps in the event loop, the pause waits for it, and the signal listener waits for the pause to end before it can deliver the wakeup for ^C. Since JuliaLang/julia#63711 shifted GC timing, this hit about half of the `mmtkconcurrent` runs at test/cancellation.jl:2625. Skip the wakeup only when the caller is itself the sole mutator. Assisted-by: Claude Code (Opus 5.5)
Author
Parents
Loading