The sigsuspend() system call gets interrupted when another process attaches itself via ptrace. How-To-Repeat: #include <unistd.h> int main(void) { pause(); return 0; } $ ./a.out & $ truss -p `pgrep a.out` process exit, rval = 0 [1] Done ./a.out $