diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index 5a77d8f..7d60d62 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -148,9 +148,13 @@ status_exit (DWORD x) void pinfo::set_exit_code (DWORD x) { - if (x >= 0xc0000000UL) + int sig = sigExeced; + if (x == STATUS_ACCESS_VIOLATION && !sig) + /* Report segfault to parent process. */ + sig = SIGSEGV; + else if (x >= 0xc0000000UL) x = status_exit (x); - self->exitcode = EXITCODE_SET | (sigExeced ?: (x & 0xff) << 8); + self->exitcode = EXITCODE_SET | (sig ?: (x & 0xff) << 8); } void