Skip to content

gmoccapy: exit cleanly on termination signal instead of error dialog#4076

Open
grandixximo wants to merge 1 commit into
LinuxCNC:masterfrom
grandixximo:fix/gmoccapy-sigterm-clean-exit
Open

gmoccapy: exit cleanly on termination signal instead of error dialog#4076
grandixximo wants to merge 1 commit into
LinuxCNC:masterfrom
grandixximo:fix/gmoccapy-sigterm-clean-exit

Conversation

@grandixximo
Copy link
Copy Markdown
Contributor

gmoccapy did not exit on SIGTERM; callers had to escalate to SIGKILL.

PyGObject's signal bridge surfaces a termination signal into the GTK main
loop as a Python KeyboardInterrupt. That reached the installed sys.excepthook,
which unconditionally popped a modal "Found an error ... KeyboardInterrupt"
dialog and blocked in the dialog's nested loop, so the process never quit.

Handle KeyboardInterrupt at the top of excepthook: log it and quit the main
loop instead of showing the modal dialog. The old broken
except KeyboardInterrupt on the window lookup (which could never fire there)
is removed.

Surfaced in the ui-smoke review, PR #4054.

Fixes #4069

Test: SIGTERM to the gmoccapy sim under xvfb. Verified with py-spy that the
process is in the real Gtk.main loop and now exits cleanly, with no SIGKILL
escalation and no error-dialog traceback.

gmoccapy did not exit on SIGTERM; callers had to escalate to SIGKILL.

Root cause: PyGObject's signal bridge surfaces a termination signal into
the GTK main loop as a Python KeyboardInterrupt. That propagated to the
installed sys.excepthook, which unconditionally popped a modal
'Found an error ... KeyboardInterrupt' dialog and blocked in the dialog's
nested loop, so the process never quit.

Handle KeyboardInterrupt at the top of excepthook: log it and quit the
main loop instead of showing the modal error dialog. Verified that
gmoccapy now exits cleanly on SIGTERM (no SIGKILL escalation, no spurious
error-dialog traceback). The previous broken 'except KeyboardInterrupt'
on the window lookup (which could never fire there) is removed.

Surfaced by the ui-smoke tests (PR LinuxCNC#4054).

Fixes LinuxCNC#4069
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

gmoccapy: does not exit on SIGTERM (swallows it as KeyboardInterrupt)

2 participants