Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

SIGABRT/SIGIOT confusion under Linux



On Linux, the obscure SIGIOT signal, which hasn't really been meaningful on any machine since the PDP-11, is an alias for the common SIGABRT (signal 6). The system strsignal() function maps signal 6 to the expected description "Aborted". However, since zsh does its own translation, and since the SIGABRT precedes SIGIOT in Linux's <signal.h>, the latter overwrites the former in zsh's signal string tables. See Src/signames2.awk.

This has (at least) two unfortunate results:

1. When a command aborts by calling `abort()`, which raises SIGABRT, zsh emits the message "zsh: IOT instruction (core dumped)" which will surely mystify most users.

2. The `kill` builtin doesn't accept `-ABRT`. If you wanted to send the abort signal to a process, you would have to know to do `kill -IOT pid` instead, or `kill -6 pid` if you have the numbers memorized.

Tested with zsh 5.9 as distributed with Ubuntu 22.10 on x86-64, but the latest zsh source in git seems to not have changed.

--
Nate Eldredge
nate@xxxxxxxxxxxxxxxxxxxx





Messages sorted by: Reverse Date, Date, Thread, Author