diff --git a/servers/pm/forkexit.c b/servers/pm/forkexit.c index 8e3cbf9f5..a0a4cb62d 100644 --- a/servers/pm/forkexit.c +++ b/servers/pm/forkexit.c @@ -173,7 +173,10 @@ int exit_status; /* the process' exit status (for parent) */ * such as copying to/ from the exiting process, before it is gone. */ sys_nice(proc_nr_e, PRIO_STOP); /* stop the process */ - tell_fs(EXIT, proc_nr_e, 0, 0); /* tell FS to free the slot */ + if(proc_nr_e != FS_PROC_NR) /* if it is not FS that is exiting.. */ + tell_fs(EXIT, proc_nr_e, 0, 0); /* tell FS to free the slot */ + else + printf("PM: FS died\n"); if((r=sys_exit(proc_nr_e)) != OK) /* destroy the process */ panic(__FILE__,"pm_exit: sys_exit failed", r); diff --git a/servers/pm/signal.c b/servers/pm/signal.c index fe971f135..f555444fa 100644 --- a/servers/pm/signal.c +++ b/servers/pm/signal.c @@ -501,7 +501,7 @@ doterminate: if (sigismember(&ign_sset, signo)) return; rmp->mp_sigstatus = (char) signo; - if (sigismember(&core_sset, signo)) { + if (sigismember(&core_sset, signo) && slot != FS_PROC_NR) { #if ENABLE_SWAP if (rmp->mp_flags & ONSWAP) { /* Process is swapped out, leave signal pending. */