|
@@ -3,6 +3,7 @@ from datetime import datetime
|
|
|
from hashlib import sha256
|
|
|
from operator import attrgetter
|
|
|
import argparse
|
|
|
+import faulthandler
|
|
|
import functools
|
|
|
import inspect
|
|
|
import os
|
|
@@ -2021,6 +2022,11 @@ def sig_info_handler(sig_no, stack): # pragma: no cover
|
|
|
break
|
|
|
|
|
|
|
|
|
+def sig_trace_handler(sig_no, stack): # pragma: no cover
|
|
|
+ print('\nReceived SIGUSR2 at %s, dumping trace...' % datetime.now().replace(microsecond=0), file=sys.stderr)
|
|
|
+ faulthandler.dump_traceback()
|
|
|
+
|
|
|
+
|
|
|
def main(): # pragma: no cover
|
|
|
# Make sure stdout and stderr have errors='replace') to avoid unicode
|
|
|
# issues when print()-ing unicode file names
|
|
@@ -2036,6 +2042,7 @@ def main(): # pragma: no cover
|
|
|
signal_handler('SIGHUP', raising_signal_handler(SigHup)), \
|
|
|
signal_handler('SIGTERM', raising_signal_handler(SigTerm)), \
|
|
|
signal_handler('SIGUSR1', sig_info_handler), \
|
|
|
+ signal_handler('SIGUSR2', sig_trace_handler), \
|
|
|
signal_handler('SIGINFO', sig_info_handler):
|
|
|
archiver = Archiver()
|
|
|
msg = None
|