GNU bug report logs - #13079
24.3.50; Emacs cannot create subprocess

Previous Next

Package: emacs;

Reported by: Li Zhai <mrzhaili <at> gmail.com>

Date: Tue, 4 Dec 2012 10:17:02 UTC

Severity: normal

Found in version 24.3.50

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: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#13079: closed (24.3.50; Emacs cannot create subprocess)
Date: Sat, 15 Dec 2012 13:43:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Sat, 15 Dec 2012 15:41:41 +0200
with message-id <83fw37mnze.fsf <at> gnu.org>
and subject line Re: bug#13079: 24.3.50; Emacs cannot create subprocess
has caused the debbugs.gnu.org bug report #13079,
regarding 24.3.50; Emacs cannot create subprocess
to be marked as done.

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


-- 
13079: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13079
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Li Zhai <mrzhaili <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 24.3.50; Emacs cannot create subprocess
Date: Tue, 4 Dec 2012 16:03:56 +0800
Hi,

I've noticed emacs cannot create subprocess in some cases:

 (progn
  (dotimes (i 25)
    (call-process-region (point-min) (point-min) "ddeclient" t 0 nil
"SUMATRA" "control")
    (message "%d" i)))

After executed above codes, emacs report:

"Spawning child process" "resource temporarily unavailable"

My emacs running environment as follows:

In GNU Emacs 24.3.50.1 (i386-mingw-nt6.1.7601)
 of 2012-11-30 on ALAN-NB
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
 `configure --with-gcc (4.5) --cflags -I/ImageLib/giflib-4.1.6/lib
 -I/ImageLib/zlib-1.2.5 -I/ImageLib/libpng-1.4.5 -I/ImageLib/jpeg-8c
 -I/ImageLib/libxpm-3.5.8-w32-src/src
 -I/ImageLib/libxpm-3.5.8-w32-src/include -I/ImageLib/tiff-3.9.4/libtiff
 -I/ImageLib/libxml2-2.8.0/include
 -I/ImageLib/gnutls-3.0.20-w32/include'

Important settings:
  value of $LANG: zh_CN.GBK
  locale-coding-system: cp936
  default enable-multibyte-characters: t

Major mode: Emacs-Lisp

Minor modes in effect:
  eldoc-mode: t
  paredit-mode: t
  TeX-PDF-mode: t
  savehist-mode: t
  desktop-save-mode: t
  anything-dired-mode: Enable anything completion in Dired functions.
Bindings affected are C, R, S, H.
This is deprecated for Emacs24+ users, use `ac-mode' instead.
  shell-dirtrack-mode: t
  show-paren-mode: t
  recentf-mode: t
  delete-selection-mode: t
  auto-image-file-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  hs-minor-mode: t

Recent input:
C-p C-p C-n M-m ; ; C-n C-n C-n C-w C-p C-p C-p C-y
C-p <tab> C-n C-n C-e C-x C-e C-x q q C-x C-e q C-x
C-e q M-x b u g <tab> C-g <f9> b u g . * r e p o r
t C-a C-e <backspace> <backspace> <backspace> <backspace>
<backspace> <backspace> e m a c s <backspace> <backspace>
<backspace> <backspace> <backspace> <backspace> <backspace>
C-a e m a c s . * C-n <return> <return> <return> C-x
1 C-c C-k C-g <wheel-down> <double-wheel-down> <triple-wheel-down>
<triple-wheel-down> <wheel-down> <double-wheel-down>
<triple-wheel-down> <triple-wheel-down> <triple-wheel-down>
<triple-wheel-down> <triple-wheel-down> <triple-wheel-down>
<wheel-up> <double-wheel-up> <triple-wheel-up> <triple-wheel-up>
<triple-wheel-up> <wheel-up> <double-wheel-up> <triple-wheel-up>
<triple-wheel-up> <triple-wheel-up> <wheel-up> <double-wheel-up>
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up>
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up>
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up>
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up>
<triple-wheel-up> <wheel-up> <double-wheel-up> <triple-wheel-up>
<triple-wheel-up> <help-echo> <down-mouse-1> <mouse-1>
<down-mouse-1> <mouse-1> <down-mouse-1> <mouse-1> <down-mouse-1>
<mouse-1> <down-mouse-1> <mouse-movement> <mouse-movement>
<drag-mouse-1> <down-mouse-1> <mouse-1> <down-mouse-1>
<mouse-1> <down-mouse-1> <mouse-1> <wheel-down> <double-wheel-down>
<triple-wheel-down> <triple-wheel-down> <wheel-down>
<double-wheel-down> <triple-wheel-down> <triple-wheel-down>
<wheel-down> <double-wheel-down> <triple-wheel-down>
<triple-wheel-down> C-c C-c n <help-echo> <down-mouse-1>
<drag-mouse-1> C-x 1 <wheel-up> <double-wheel-up> <triple-wheel-up>
<triple-wheel-up> <triple-wheel-up> <wheel-up> <double-wheel-up>
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up>
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up>
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up>
<down-mouse-1> <mouse-1> <down-mouse-1> <mouse-1> <down-mouse-1>
<mouse-1> <down-mouse-1> <mouse-1> <down-mouse-1> <mouse-1>
<down-mouse-1> <mouse-1> <down-mouse-1> <mouse-1> <down-mouse-1>
<mouse-1> <down-mouse-1> <mouse-1> C-/ C-/ C-/ C-/
C-x k <return> C-x C-b a a q M-x M-p <return> <down-mouse-1>
<mouse-1> X b <backspace> <backspace> <S-down> <S-down>
<S-down> C-g <up> <up> <up> C-x b s c r <return> C-x
b C-g C-h e M-> C-p C-p C-p C-p C-p C-p C-p C-p C-p
C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p M-v C-s
s w a n C-s C-s C-g C-g C-x b <return> C-n C-n C-n
C-n C-n C-n C-n C-n C-n C-n C-n C-e C-x C-e <help-echo>
<down-mouse-1> <mouse-movement> <mouse-movement> <drag-mouse-1>
<help-echo> M-w q C-x b C-g M-x M-p <return>

Recent messages:
Mark set
byte-code: Beginning of buffer [6 times]
Auto-saving...done
Undo! [3 times]
user-error: No further undo information
Quit [2 times]
Mark set
Quit
Entering debugger...
Back to top level.
Quit

Load-path shadows:
None found.

Features:
(shadow sort mail-extr gnus-msg gnus-art mm-uu mml2015 epg-config
mm-view mml-smime smime dig gnus-sum nnoo gnus-group gnus-undo nnmail
mail-source gnus-start gnus-spec gnus-int gnus-range gnus-win gnus
gnus-ems nnheader emacsbug message rfc822 mml mml-sec mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
sendmail rfc2047 rfc2045 ietf-drums mail-utils novice highlight-symbol
hi-lock misearch multi-isearch vc-git bm bs macros help-mode debug rect
hideshow eldoc paredit ind-util reftex-auc preview prv-emacs info
reporter tex-buf tex-fold cdlatex texmathp reftex-dcr reftex reftex-vars
font-latex latex derived tex-style tex savehist desktop saveplace
bbdb-autoloads bbdb timezone preview-latex tex-site auto-loads org-clock
org-exp ob-exp org-exp-blocks org-agenda w32-browser anything-config
browse-url imenu bookmark pp rx anything-match-plugin
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw loaddefs mode-local cedet org ob-tangle ob-ref ob-lob
ob-table org-footnote org-src ob-comint ob-keys org-pcomplete org-list
org-faces org-entities noutline outline org-version ob-emacs-lisp ob
org-compat org-macs ob-eval org-loaddefs xml grep compile tramp
tramp-compat tramp-loaddefs shell pcomplete comint format-spec dired-x
dired-aux anything smart-compile paren slime-autoloads cc-styles
cc-align cc-engine cc-vars cc-defs xcscope ring auto-install easy-mmode
ffap thingatpt find-func dired url url-proxy url-privacy url-expand
url-methods url-history url-cookie url-domsuf url-util url-parse
auth-source eieio gnus-util mm-util mail-prsvr password-cache url-vars
mailcap windmove cal-china-x cl-macs gv cl cl-lib cal-china lunar solar
cal-dst holidays hol-loaddefs cal-menu calendar cal-loaddefs window+
uniquify midnight filecache ido recentf tree-widget wid-edit easymenu
edmacro kmacro byte-opt warnings bytecomp byte-compile cconv nadvice
advice help-fns server ps-ccrypt delsel image-file avoid ansi-color
time-date china-util tooltip ediff-hook vc-hooks lisp-float-type mwheel
dos-w32 ls-lisp w32-common-fns disp-table w32-win w32-vars tool-bar dnd
fontset image regexp-opt fringe tabulated-list newcomment lisp-mode
register page menu-bar rfn-eshadow timer select scroll-bar mouse
jit-lock font-lock syntax facemenu font-core frame cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev
minibuffer button faces cus-face macroexp files text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote make-network-process w32 multi-tty
emacs)


[Message part 3 (message/rfc822, inline)]
From: Eli Zaretskii <eliz <at> gnu.org>
To: mrzhaili <at> gmail.com
Cc: 13079-done <at> debbugs.gnu.org
Subject: Re: bug#13079: 24.3.50; Emacs cannot create subprocess
Date: Sat, 15 Dec 2012 15:41:41 +0200
> Date: Wed, 05 Dec 2012 19:29:58 +0200
> From: Eli Zaretskii <eliz <at> gnu.org>
> Cc: 13079 <at> debbugs.gnu.org
> 
> The harder part of this bug is the reason _why_ 'mktemp' fails.  Your
> command launches asynchronous subprocesses, creating a temporary file
> for each one of them where Emacs puts the contents of the region.  In
> this case, call-process-region arranges for the temporary files to be
> removed when the call to call-process returns, and then calls
> call-process.  However, since this is an async subprocess,
> call-process returns immediately, without waiting for the subprocess
> to exit, and Emacs deletes the temporary file.  This "cleanup" uses
> the non-portable (outside of Posix filesystems) trick of deleting a
> file while it is still open and used by the child process.  On
> Windows, this attempt to delete the file fails, and the file is left
> behind.
> 
> The other part of this puzzle is that 'mktemp' as implemented by the
> Windows runtime can only have up to 42 simultaneous temporary files
> per calling thread (the MSDN documentation says 26, but that's a lie).
> Once there are 42 files in your TEMP directory created by a single
> Emacs session, all the future calls to 'mktemp' from the same session
> will fail, unless you manually delete those files.
> 
> This part of the bug is harder to solve, because some code needs to be
> implemented that will defer deletion until the process exits.  So it
> is not solved yet.

Should be fixed now (revision 11244 on the trunk).  I was able to run
your test case multiple times without any errors, and after that,
there were no left-over temporary files in the temporary directory.


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

Previous Next


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