Author: Timo Teräs <timo.teras@iki.fi> 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. --- make-4.3/src/output.c +++ make-4.3/src/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); } }