misc: dump threads on SIGINT

This commit is contained in:
Peter F. Patel-Schneider 2020-07-04 09:34:47 -04:00
parent c38d10a654
commit fe0ab16cc8
1 changed files with 20 additions and 0 deletions

View File

@ -22,11 +22,17 @@ from __future__ import absolute_import, division, print_function, unicode_litera
import importlib
from logging import INFO as _INFO
from logging import getLogger
import solaar.cli as _cli
import solaar.i18n as _i18n
from solaar import NAME, __version__
_log = getLogger(__name__)
del getLogger
#
#
#
@ -100,12 +106,26 @@ def _parse_arguments():
return args
# On first SIGINT, dump threads to stderr; on second, exit
def _handlesigint(signal, stack):
import signal
import sys
import faulthandler
signal.signal(signal.SIGINT, signal.SIG_DFL)
if _log.isEnabledFor(_INFO):
faulthandler.dump_traceback()
sys.exit('%s: exit due to keyboard interrupt' % (NAME.lower()))
def main():
_require('pyudev', 'python3-pyudev')
# handle ^C in console
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
signal.signal(signal.SIGINT, _handlesigint)
args = _parse_arguments()
if not args: