GDM leaks a file descriptor every time the X server is restarted. I see no reason why GDM needs to keep the logfile open in the parent GDM process, so the attached patch waits until just before starting X to open the logfile. This fixes the leak. Where's gdm3? I see a cvs dir for it, but nothing in it... -- Ryan Murray, (rmurray cyberhqz com, rmurray debian org, rmurray stormix com) Projects Manager, Stormix Technologies Inc., Debian Developer The opinions expressed here are my own.
diff -ruN gdm-2.0beta4.orig/daemon/server.c gdm-2.0beta4/daemon/server.c --- gdm-2.0beta4.orig/daemon/server.c Fri Sep 8 23:52:00 2000 +++ gdm-2.0beta4/daemon/server.c Fri Sep 8 23:51:12 2000 @@ -120,17 +120,6 @@ sigaddset (&usr1mask, SIGUSR1); sigprocmask (SIG_UNBLOCK, &usr1mask, NULL); - /* Log all output from spawned programs to a file */ - logfd = open (g_strconcat (GdmLogDir, "/", d->name, ".log", NULL), - O_CREAT|O_TRUNC|O_APPEND|O_WRONLY, 0666); - - if (logfd != -1) { - dup2 (logfd, 1); - dup2 (logfd, 2); - } - else - gdm_error (_("gdm_server_start: Could not open logfile for display %s!"), d->name); - /* Just in case we have an old server hanging around */ if (d->servpid) { gdm_debug ("gdm_server_start: Old server found (%d). Killing.", d->servpid); @@ -151,7 +140,18 @@ /* Close the XDMCP fd inherited by the daemon process */ if (GdmXdmcp) gdm_xdmcp_close(); + + /* Log all output from spawned programs to a file */ + logfd = open (g_strconcat (GdmLogDir, "/", d->name, ".log", NULL), + O_CREAT|O_TRUNC|O_APPEND|O_WRONLY, 0666); + if (logfd != -1) { + dup2 (logfd, 1); + dup2 (logfd, 2); + } + else + gdm_error (_("gdm_server_start: Could not open logfile for display %s!"), d->name); + /* The X server expects USR1 to be SIG_IGN */ usr1.sa_handler = SIG_IGN; usr1.sa_flags = SA_RESTART;
Attachment:
pgpIAzn7GhQwF.pgp
Description: PGP signature