Skip to content

Improve crash message: distinguish exit vs signal#98

Open
kalvdans wants to merge 1 commit intopytest-dev:masterfrom
kalvdans:improve-crash-message
Open

Improve crash message: distinguish exit vs signal#98
kalvdans wants to merge 1 commit intopytest-dev:masterfrom
kalvdans:improve-crash-message

Conversation

@kalvdans
Copy link

When a forked test process exits with a non-zero exit code (signal == 0), the message previously said "CRASHED with signal 0" which is misleading — signal 0 is not a real signal and the process was not killed by one.

Now:

  • Non-signal exit: "EXITED with status "
  • Signal kill: "CRASHED with signal ()" e.g. "signal 11 (SIGSEGV)"

signal.Signals() is called without a try/except because result.signal comes from os.WTERMSIG(), which extracts the signal from the kernel's wait status — the kernel can only kill a process with a valid signal number.

Note: sys.exit() is caught by pytest as SystemExit and does not trigger report_process_crash; os._exit() bypasses the marshal pipe and does.

When a forked test process exits with a non-zero exit code (signal == 0),
the message previously said "CRASHED with signal 0" which is misleading —
signal 0 is not a real signal and the process was not killed by one.

Now:
- Non-signal exit: "EXITED with status <N>"
- Signal kill:     "CRASHED with signal <N> (<NAME>)" e.g. "signal 11 (SIGSEGV)"

signal.Signals() is called without a try/except because result.signal comes
from os.WTERMSIG(), which extracts the signal from the kernel's wait status —
the kernel can only kill a process with a valid signal number.

Note: sys.exit() is caught by pytest as SystemExit and does not trigger
report_process_crash; os._exit() bypasses the marshal pipe and does.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments