From b1688f71e7dac330a8e2945f30d507addfd21931 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Thu, 13 Nov 2025 19:53:02 -0500 Subject: [PATCH] more signal handling --- src/core/worker_loop_.ml | 17 +---------------- src/dpool/moonpool_dpool.ml | 6 +----- src/private/signals_.ml | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 21 deletions(-) create mode 100644 src/private/signals_.ml diff --git a/src/core/worker_loop_.ml b/src/core/worker_loop_.ml index 7ba781a5..d36d1d52 100644 --- a/src/core/worker_loop_.ml +++ b/src/core/worker_loop_.ml @@ -144,22 +144,7 @@ module Fine_grained (Args : FINE_GRAINED_ARGS) () = struct if !state <> New then invalid_arg "worker_loop.setup: not a new instance"; state := Ready; - if block_signals then ( - try - ignore - (Unix.sigprocmask SIG_BLOCK - [ - Sys.sigterm; - Sys.sigpipe; - Sys.sigint; - Sys.sigchld; - Sys.sigalrm; - Sys.sigusr1; - Sys.sigusr2; - ] - : _ list) - with _ -> () - ); + if block_signals then Signals_.ignore_signals_ (); TLS.set Runner.For_runner_implementors.k_cur_runner runner; diff --git a/src/dpool/moonpool_dpool.ml b/src/dpool/moonpool_dpool.ml index eda1a8e5..786c6a9f 100644 --- a/src/dpool/moonpool_dpool.ml +++ b/src/dpool/moonpool_dpool.ml @@ -99,11 +99,7 @@ let domains_ : (worker_state option * Domain_.t option) Lock.t array = a [Pool.with_] or [Pool.create() … Pool.shutdown()] in a tight loop), and if nothing happens it tries to stop to free resources. *) let work_ idx (st : worker_state) : unit = - Thread.sigmask SIG_BLOCK - [ - Sys.sigpipe; Sys.sigbus; Sys.sigterm; Sys.sigint; Sys.sigusr1; Sys.sigusr2; - ] - |> ignore; + Signals_.ignore_signals_ (); let main_loop () = let continue = ref true in while !continue do diff --git a/src/private/signals_.ml b/src/private/signals_.ml new file mode 100644 index 00000000..95f86fb4 --- /dev/null +++ b/src/private/signals_.ml @@ -0,0 +1,15 @@ +let ignore_signals_ () = + try + Thread.sigmask SIG_BLOCK + [ + Sys.sigpipe; + Sys.sigbus; + Sys.sigterm; + Sys.sigchld; + Sys.sigalrm; + Sys.sigint; + Sys.sigusr1; + Sys.sigusr2; + ] + |> ignore + with _ -> ()