From: "Eregon (Benoit Daloze) via ruby-core" Date: 2026-06-12T11:31:14+00:00 Subject: [ruby-core:125726] [Ruby Bug#22098] RUBY_INTERNAL_THREAD_EVENT_RESUMED runs without GVL held Issue #22098 has been updated by Eregon (Benoit Daloze). jhawthorn (John Hawthorn) wrote in #note-14: > Why do you need it? Could you pass the raw pointer? In this case it's to access some configuration of the profiler for whether to sample after RESUMED (`state->waiting_for_gvl_threshold_ns`), i.e. if it took a while to acquire the GVL (from READY to RESUMED). There are ways to work around it, e.g. by storing that in a C global, or passing it to the GVL callback as the extra data pointer, but since this hook should effectively "have" the GVL I thought it's fine enough to get it from the Ruby object. ---------------------------------------- Bug #22098: RUBY_INTERNAL_THREAD_EVENT_RESUMED runs without GVL held https://bugs.ruby-lang.org/issues/22098#change-117600 * Author: luke-gru (Luke Gruber) * Status: Open * Assignee: luke-gru (Luke Gruber) * Backport: 3.3: UNKNOWN, 3.4: UNKNOWN, 4.0: UNKNOWN ---------------------------------------- Today, it's possible to get a deadlock when allocating during a hook for this event. I attached a reproduction script using the `gvltools` gem. One way to fix it would be to not allocate during this hook and change the documentation to be clear that the GVL is not held. Any gems relying on this behavior, like `gvltools`, would need to be patched. Another way to approach it would be to change the call site for this hook invocation. I believe it would need to be added to quite a few places. To maintain Ractor safety, it would also need to be invoked without any locks held. I'm curious about your thoughts @byroot. ---Files-------------------------------- repro.rb (3.11 KB) run_loop.sh (2.82 KB) -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/