GNU bug report logs - #13527
24.2.92; Spawning child process: resource temporarily unavailable

Previous Next

Package: emacs;

Reported by: "Sebastien Vauban" <wxhgmqzgwmuf <at> spammotel.com>

Date: Tue, 22 Jan 2013 13:33:02 UTC

Severity: important

Merged with 13546, 13701

Found in versions 24.2.92, 24.2.93

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Eli Zaretskii <eliz <at> gnu.org>
To: Sebastien Vauban <wxhgmqzgwmuf <at> spammotel.com>
Cc: 13527 <at> debbugs.gnu.org
Subject: bug#13527: 24.2.92; Spawning child process: resource temporarily unavailable
Date: Tue, 22 Jan 2013 17:39:56 +0200
> From: "Sebastien Vauban" <wxhgmqzgwmuf <at> spammotel.com>
> Cc: Sebastien Vauban <wxhgmqzgwmuf <at> spammotel.com>,  13527 <at> debbugs.gnu.org
> Date: Tue, 22 Jan 2013 16:21:54 +0100
> 
> > If you can run Emacs under GDB, I can tell you how to get the
> > information needed to understand this problem.
> 
> Do you mean: launching Emacs from within GDB?  Or simply being able to attach
> GDB to a running Emacs?  In the latter case, yes.

It doesn't matter, whatever is easier for you.

> So does the first case as well, apparently:
> 
> --8<---------------cut here---------------start------------->8---
> $ cd Program\ Files\ \(x86\)/emacs-24.2.92/bin
> $ gdb runemacs.exe

You need to use "gdb emacs.exe", runemacs.exe is just a launcher
program.

> So, yes, I'd be interested by how to study this...

The error message comes from this snippet in callproc.c:

  #ifdef WINDOWSNT
    prepare_standard_handles (in, out, err, handles);
    set_process_dir (SDATA (current_dir));
    /* Spawn the child.  (See ntproc.c:Spawnve).  */
    cpid = spawnve (_P_NOWAIT, new_argv[0], new_argv, env);
    reset_standard_handles (in, out, err, handles);
    if (cpid == -1)
      /* An error occurred while trying to spawn the process.  */
      report_file_error ("Spawning child process", Qnil);
    return cpid;

  #else  /* not WINDOWSNT */

The call to 'spawnve' will end up in w32proc.c:sys_spawnve, which
returns EAGAIN here:

  cp = new_child ();
  if (cp == NULL)
    {
      errno = EAGAIN;
      return -1;
    }

Therefore, step into spawnve, then step into new_child, and see why
new_child returns NULL.  I see a couple of places where it does so,
one of them because there's already 32 subprocesses running (which is
a hard limit in Emacs on Windows), the other one because some system
APIs fail.

If you need more instructions about the specific GDB commands to use,
please don't hesitate to ask.

Thanks.




This bug report was last modified 12 years and 137 days ago.

Previous Next


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