GNU bug report logs - #8303
Emacs daemon initialization should not ignore I/O errors

Previous Next

Package: emacs;

Reported by: Paul Eggert <eggert <at> cs.ucla.edu>

Date: Sun, 20 Mar 2011 23:35:01 UTC

Severity: minor

Done: Paul Eggert <eggert <at> cs.ucla.edu>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Paul Eggert <eggert <at> cs.ucla.edu>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#8303: closed (Emacs daemon initialization should not ignore
 I/O errors)
Date: Wed, 23 Mar 2011 22:07:10 +0000
[Message part 1 (text/plain, inline)]
Your message dated Wed, 23 Mar 2011 15:06:46 -0700
with message-id <4D8A6EF6.6010006 <at> cs.ucla.edu>
and subject line fix merged to trunk
has caused the GNU bug report #8303,
regarding Emacs daemon initialization should not ignore I/O errors
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
8303: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8303
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Paul Eggert <eggert <at> cs.ucla.edu>
To: bug-gnu-emacs <at> gnu.org
Subject: Emacs daemon initialization should not ignore I/O errors
Date: Sun, 20 Mar 2011 16:34:22 -0700
Severity: minor

daemon-initialized currently ignores I/O errors when setting
up the daemon, but it should report them, on the off chance that
system resources are low so that (for example) one cannot open
/dev/null or dup a file descriptor.  I plan to install the following
patch in the trunk, to address this.

2011-03-20  Paul Eggert  <eggert <at> cs.ucla.edu>

	* emacs.c (Fdaemon_initialized): Do not ignore I/O errors.

--- src/emacs.c	2011-03-17 16:32:03 +0000
+++ src/emacs.c	2011-03-20 21:03:44 +0000
@@ -2312,6 +2312,7 @@
   (void)
 {
   int nfd;
+  int err = 0;
 
   if (!IS_DAEMON)
     error ("This function can only be called if emacs is run as a daemon");
@@ -2324,10 +2325,11 @@
 
   /* Get rid of stdin, stdout and stderr.  */
   nfd = open ("/dev/null", O_RDWR);
-  dup2 (nfd, 0);
-  dup2 (nfd, 1);
-  dup2 (nfd, 2);
-  close (nfd);
+  err |= nfd < 0;
+  err |= dup2 (nfd, 0) < 0;
+  err |= dup2 (nfd, 1) < 0;
+  err |= dup2 (nfd, 2) < 0;
+  err |= close (nfd) != 0;
 
   /* Closing the pipe will notify the parent that it can exit.
      FIXME: In case some other process inherited the pipe, closing it here
@@ -2336,10 +2338,13 @@
      Instead, we should probably close the pipe in start-process and
      call-process to make sure the pipe is never inherited by
      subprocesses.  */
-  write (daemon_pipe[1], "\n", 1);
-  close (daemon_pipe[1]);
+  err |= write (daemon_pipe[1], "\n", 1) < 0;
+  err |= close (daemon_pipe[1]) != 0;
   /* Set it to an invalid value so we know we've already run this function.  */
   daemon_pipe[1] = -1;
+
+  if (err)
+    error ("I/O error during daemon initialization");
   return Qt;
 }
 



[Message part 3 (message/rfc822, inline)]
From: Paul Eggert <eggert <at> cs.ucla.edu>
To: 8310-done <at> debbugs.gnu.org, 8318-done <at> debbugs.gnu.org, 
	8306-done <at> debbugs.gnu.org, 8303-done <at> debbugs.gnu.org, 
	8277-done <at> debbugs.gnu.org, 8298-done <at> debbugs.gnu.org, 
	8290-done <at> debbugs.gnu.org, 8278-done <at> debbugs.gnu.org
Subject: fix merged to trunk
Date: Wed, 23 Mar 2011 15:06:46 -0700
I committed a fix to the trunk for this,
as part of a recent merge (bzr 103721).


This bug report was last modified 14 years and 96 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.