trio icon indicating copy to clipboard operation
trio copied to clipboard

Embedded use vs. signal handler

Open smurfix opened this issue 2 years ago • 0 comments

If you install your own signal handler from C and then run an embedded Python interpreter, you can't use Trio:

Traceback (most recent call last):
  File "/etc/kamailio/main.py", line 65, in background
    trio.run(bg_main)
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1929, in run
    runner = setup_runner(
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1846, in setup_runner
    ki_manager.install(runner.deliver_ki, restrict_keyboard_interrupt_to_checkpoints)
  File "/usr/lib/python3/dist-packages/trio/_core/_ki.py", line 180, in install
    not is_main_thread()
  File "/usr/lib/python3/dist-packages/trio/_util.py", line 79, in is_main_thread
    signal.signal(signal.SIGINT, signal.getsignal(signal.SIGINT))
  File "/usr/lib/python3.9/signal.py", line 56, in signal
    handler = _signal.signal(_enum_to_int(signalnum), _enum_to_int(handler))
TypeError: signal handler must be signal.SIG_IGN, signal.SIG_DFL, or a callable object

smurfix avatar Jun 01 '22 08:06 smurfix