@@ -120,15 +120,18 @@ def unpatch(obj, func_name):
120
120
setattr (obj , func_name , getattr (wrapper , '__stackimpact_orig__' ))
121
121
122
122
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
+
125
126
def _handler (signum , frame ):
126
127
skip_prev = handler_func (signum , frame )
127
128
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 )
134
135
136
+ prev_handler = signal .signal (signal_number , _handler )
137
+
0 commit comments