Subject: bug#10217: 24.0.92; Error on quitting Emacs

From: Glenn Morris <[email-masked]>
Date: Mon, 05 Dec 2011 21:47:52 -0500

Jürgen Bickert wrote:

> If you evaluate '(start-process "foo" " foo" "ls" 10)' an error occurs
> since 10 is not of type sequence. Then if you try to quit emacs the same
> error occurs which makes it impossible to quit emacs without killing
> it.

IIUC, start-process contains code which is supposed to handle this kind
of thing:

  /* If an error occurs and we can't start the process, we want to
     remove it from the process list. 

But it doesn't seem to work. Eg:

(start-process "foo" "foo" "FOO" )

-> (file-error "Searching for program" "no such file or directory" "FOO")

yet

(process-list)

-> (#<process foo>)

(This was previously reported as http://debbugs.gnu.org/7021 ).

It works as it should in Emacs 23.1, but not in 23.2 or later.

By experiment, reverting the 2009-08-13 change to start_process_unwind
("Use pid == -2 to mean no process") seems to fix it, ie:

*** src/process.c   2011-11-28 08:20:58 +0000
--- src/process.c   2011-12-06 02:40:35 +0000
***************
*** 1522,1528 ****
      abort ();
  
    /* Was PROC started successfully?  */
!   if (XPROCESS (proc)->pid == -1)
      remove_process (proc);
  
    return Qnil;
--- 1522,1528 ----
      abort ();
  
    /* Was PROC started successfully?  */
!   if (XPROCESS (proc)->pid <= 0)
      remove_process (proc);
  
    return Qnil;