diff --git a/sysdeps/mach/hurd/kill.c b/sysdeps/mach/hurd/kill.c index 1e006ee1db..8cba3cc4ea 100644 --- a/sysdeps/mach/hurd/kill.c +++ b/sysdeps/mach/hurd/kill.c @@ -17,7 +17,9 @@ #include #include +#include #include +#include #include #include #include @@ -34,6 +36,14 @@ __kill (pid_t pid, int sig) mach_port_t proc; struct hurd_userlink ulink; + if (pid == __getpid () && _hurd_msgport == MACH_PORT_NULL) + { + /* We are trying to kill ourself but we have not even initialized our own + msgport yet. Abort by hand. */ + _exit (127); + /* NOTREACHED */ + } + void kill_pid (pid_t pid) /* Kill one PID. */ { /* SIGKILL is not delivered as a normal signal.