]> Zhao Yanbai Git Server - minix.git/commitdiff
special case when exiting FS - don't core dump and don't tell FS about it
authorBen Gras <ben@minix3.org>
Fri, 10 Mar 2006 17:35:55 +0000 (17:35 +0000)
committerBen Gras <ben@minix3.org>
Fri, 10 Mar 2006 17:35:55 +0000 (17:35 +0000)
Because if FS is hanging in a signal, the exit won't work.
This way FS gets exited on e.g. SIGSEGV.

servers/pm/forkexit.c
servers/pm/signal.c

index 8e3cbf9f57022fcc24f45cbcf9dbdd44b3b14fb3..a0a4cb62d3922db86a612ae96ad908a358c0960f 100644 (file)
@@ -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);
 
index fe971f1351a10f540499456e522758f9af9f36a4..f555444faf0438d43d577c749d342cbd257f6c5a 100644 (file)
@@ -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. */