https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89868
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Actually it comes from the shell. e.g. from bash: if ((WIFSTOPPED (show->status) == 0) && (WIFCONTINUED (show->status) == 0) && WIFCORED (show->status)) fprintf (stream, _("(core dumped) ")); As WIFCORED is set on status. WIFCORED is really a define for WCOREDUMP. http://man7.org/linux/man-pages/man2/waitpid.2.html So basically the kernel does not communicate why a core is not dumped to the waiting (parent) process.