On Thu, Dec 11, 2008 at 03:43:48PM -0800, Bill Shannon wrote:
> I filed http://defect.opensolaris.org/bz/show_bug.cgi?id=5788

Indeed: $SRC/cmd/fs.d/autofs/autod_main.c has this:

 178 #ifndef DEBUG
 179         pid = fork();
 180         if (pid < 0) {
 181                 perror("cannot fork");
 182                 exit(1);
 183         }
 184         if (pid)
 185                 exit(0);
 186 #endif

Why that's ifndef'ed, I don't know.  Also, there's this oddity in
automount.h:

#ifndef _REENTRANT
#define fork1                   vfork
#define rpc_control(a, b)       1
#endif

And, further, automountd forks again:

 217         pid = fork1();
 218         if (pid < 0) {
...
 230         } else if (pid > 0) {
 231                 /* this is the door server process */
 232                 automountd_wait_for_cleanup(pid);
 233         }

where automountd_wait_for_cleanup() just waits for the child and then
exits.  The parent there seems to exist to serve door requests on
did_fork_exec and did_exec_map, but why must that be done in a separate
process when both processes run with the same credentials and
privileges?

Very odd.

Nico
-- 

Reply via email to