@@ -120,15 +120,18 @@ def unpatch(obj, func_name):
120120 setattr (obj , func_name , getattr (wrapper , '__stackimpact_orig__' ))
121121
122122
123- def register_signal (signal_number , handler_func ):
124- prev_handler = signal .SIG_IGN
123+ def register_signal (signal_number , handler_func , ignore_default = True ):
124+ prev_handler = None
125+
125126 def _handler (signum , frame ):
126127 skip_prev = handler_func (signum , frame )
127128
128- if not skip_prev and prev_handler not in [ signal . SIG_IGN , signal . SIG_DFL ] and callable ( prev_handler ) :
129- prev_handler ( signum , frame )
130-
131- prev_handler = signal .signal ( signal_number , signal . SIG_IGN )
132- if prev_handler != signal .SIG_IGN :
133- signal . signal ( signal_number , _handler )
129+ if not skip_prev :
130+ if callable ( prev_handler ):
131+ prev_handler ( signum , frame )
132+ elif prev_handler == signal .SIG_DFL and not ignore_default :
133+ signal .signal ( signum , signal . SIG_DFL )
134+ os . kill ( os . getpid (), signum )
134135
136+ prev_handler = signal .signal (signal_number , _handler )
137+
0 commit comments