GNU bug report logs -
#17561
24.4.50; Emacs can forget processes
Previous Next
Full log
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From time to time, my Emacs tends to become very slow. I have tracked
this down to a weird interaction with certain processes.
Sometimes, when a process dies (e.g. after its buffer is killed), Emacs
apparently does not clean up correctly. The sentinel is called, the
process itself receives a termination signal, but the process object
still shows up in M-x list-processes, and there is a zombie process in
ps.
When this happens, Emacs is in a tight loop trying to read from the dead
process(es):
21:24:00.948071 pselect6(12, [3 4 9 11], [], NULL, {0, 1376013},
{NULL, 8}) = 2 (in [9 11], left {0, 1373467})
<0.000011>
21:24:00.948529 read(9, "", 4096) = 0 <0.000009>
21:24:00.948564 read(11, "", 4096) = 0 <0.000008>
Killing the processes in M-x list-processes using
`process-menu-delete-process' returns Emacs to a usable state, albeit
the zombie processes stay around.
I have been able to reliably reproduce the behavior using this snippet:
(with-temp-buffer
(let ((process-connection-type t))
(set-process-query-on-exit-flag
(start-process "cat" (current-buffer) "cat")
nil)))
I.e. create a buffer, associate a process with it, remove the query on
exit flag, and kill the buffer. The `process-connection-type' nil is the
relevant part. With t, it works correctly.
The snippet does *not* work on a freshly-started Emacs. A random time
after the bug shows up, Emacs also cleans up the zombie processes and
the bug can not be triggered anymore. Until a whole while later, it
shows up again.
I have seen this happen in 24.3.50, 24.3.91 (pretest 2), and current
trunk.
This bug report was last modified 10 years and 351 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.