Author: Timo Teräs POSIX says the behaviour is undefined if atexit callback calls exit(). On glibc it works, but on musl it does not. Call instead _exit() which is guaranteed to work. --- ./output.c.orig +++ ./output.c @@ -495,7 +495,7 @@ perror_with_name (_("write error: stdout"), ""); else O (error, NILF, _("write error: stdout")); - exit (MAKE_TROUBLE); + _exit (MAKE_TROUBLE); } }