[Mauiusers] Patch to fix a possible double free
Josh Butikofer
josh at clusterresources.com
Mon Aug 13 15:02:50 MDT 2007
Thanks to both Ole and Ronny for enlightening me. :)
--
Joshua Butikofer
Cluster Resources, Inc.
josh at clusterresources.com
Voice: (801) 717-3707
Fax: (801) 717-3738
--------------------------
Ole Holm Nielsen wrote:
> Ronny T. Lampert wrote:
>>> I'm not sure I understand what you mean by "daemon should duplicate
>>> all standard descriptors to
>>> /dev/null." Perhaps you can help me in my ignorance.
>>
>> Ah, yes. Usually, fully background daemons close 0, 1 and 2 (stdin,
>> out and err) and dup() them to /dev/null, and also do a setsid().
>>
>> This prevents accidentially opened ttys (and sessions) to be held open
>> or msgs (e.g. perror()) going somewhere where they possibly shouldn't.
>> One also could dup() them to a file, so all output goes there in case
>> some library functions really wants to use stdout or -err.
>>
>> I think closing stdin is quite crucial to correct operation, else the
>> daemon could accidentially get blocked.
>
> I've also noticed that if I restart the maui daemon, my interactive
> SSH-login shell to the central server refuses to terminate. I have
> to kill the shell from adifferent window. Fortunately, the maui
> daemon has always survived this harsh treatment of its open file
> descriptors.
>
> I have a (possibly naive) snippet of code from another type of
> daemon process where the files are properly closed:
>
> /* Become a daemon */
> pid = fork();
> if (pid > 0) { /* Parent */
> /* Close parent's streams */
> fclose (stdin);
> fclose (stdout);
> fclose (stderr);
> return(0);
> } else if (pid < 0) { /* Error */
> printf("%s: Could not fork child process\n", argv[0]);
> return(-1);
> }
>
> The Maui code in src/server/OServer.c doesn't close file descriptors,
> which IMHO it ought to do. Ronny has even more detailed suggestions
> above which I don't claim to understand fully.
>
> Best regards,
> Ole Holm Nielsen
> Technical University of Denmark
More information about the mauiusers
mailing list