summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Hawthorn <[email protected]>2025-05-14 19:59:03 -0700
committerJohn Hawthorn <[email protected]>2025-05-20 09:56:31 -0700
commite7f97eb2f3539ec49c61e4adbfaa7600256ef234 (patch)
treef48808f94fc9ddf214410be45fc66fcf8e576b4a
parent05e0e7223acbc9ab223dd8f4b342d5eb6d3ae8c7 (diff)
Use atomic load for signal buff size
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/13357
-rw-r--r--misc/tsan_suppressions.txt1
-rw-r--r--signal.c4
2 files changed, 2 insertions, 3 deletions
diff --git a/misc/tsan_suppressions.txt b/misc/tsan_suppressions.txt
index 7d6c11987c..212c6aad65 100644
--- a/misc/tsan_suppressions.txt
+++ b/misc/tsan_suppressions.txt
@@ -22,7 +22,6 @@ race_top:push_subclass_entry_to_list
race:objspace_malloc_increase_body
# Signals and ubf
-race_top:rb_signal_buff_size
race:unregister_ubf_list
# It's already crashing. We're doing our best
diff --git a/signal.c b/signal.c
index 1cb81d8f82..ad21ef25c2 100644
--- a/signal.c
+++ b/signal.c
@@ -710,7 +710,7 @@ sighandler(int sig)
int
rb_signal_buff_size(void)
{
- return signal_buff.size;
+ return RUBY_ATOMIC_LOAD(signal_buff.size);
}
static void
@@ -738,7 +738,7 @@ rb_get_next_signal(void)
{
int i, sig = 0;
- if (signal_buff.size != 0) {
+ if (rb_signal_buff_size() != 0) {
for (i=1; i<RUBY_NSIG; i++) {
if (signal_buff.cnt[i] > 0) {
ATOMIC_DEC(signal_buff.cnt[i]);