solaris10-afsd-waitpid-to-clean-contract-20051013
authorChas Williams <chas@cmf.nrl.navy.mil>
Thu, 13 Oct 2005 21:59:13 +0000 (21:59 +0000)
committerDerrick Brashear <shadow@dementia.org>
Thu, 13 Oct 2005 21:59:13 +0000 (21:59 +0000)
FIXES 22317

it seems like this might be a bug in solaris10 when handling contracts
of exiting chilren who have created kernel threads.  the rxlistener is
a kernel thread on solaris and the child that starts the kernel_thread
returns and exits.

src/afsd/afsd.c

index e22bc6c..f900281 100644 (file)
@@ -78,6 +78,7 @@ RCSID
 #include <errno.h>
 #include <sys/time.h>
 #include <dirent.h>
+#include <sys/wait.h>
 
 
 #ifdef HAVE_SYS_PARAM_H
@@ -1821,6 +1822,9 @@ mainproc(struct cmd_syndesc *as, char *arock)
                     enable_process_stats);
        exit(1);
     }
+#ifdef AFS_SUN510_ENV
+    waitpid((pid_t) -1, NULL, 0);
+#endif
 #endif
     if (afsd_verbose)
        printf("%s: Forking rx callback listener.\n", rn);