Subject: bug#17561: Emacs can forget processes

From: Jorgen Schaefer <[email-masked]>
Date: Thu, 29 May 2014 13:39:27 +0200

On Wed, 28 May 2014 21:17:40 -0700
Paul Eggert <[email-masked]> wrote:

> Can you please apply the attached patch to the emacs-24 branch, run 
> ./autogen.sh && configure && make clean && make, and then try it out
> on your platform?  Thanks.

I can not currently build the emacs-24 branch (and haven't found a
commit in it that I can on a quick try), see bug#17629.

Using trunk (git 40f5ec0 * alloc.c (Fgarbage_collect): Fix compilation
with GC_MARK_STACK == GC_USE_GCPROS_AS_BEFORE.) now, built with your
patch and this command:

$ ./autogen.sh && ./configure --without-x && make clean && make

When restarting Emacs, I had the bug happen again right away. Sadly
without a running strace.

When my Emacs starts, I connect to a few IRC servers, and my IRC client
then starts flyspell in the channel buffers. I got this error right
away:

Error in post-command-hook (flyspell-post-command-hook): (error
"process ispellno longer connected to pipe; closed it")

After this, killing Python RPC processes reproduced it again as well.

strace:

13:28:46 --- SIGIO (I/O possible) @ 0 (0) ---
13:28:46 rt_sigreturn(0x1d)             = 1 <0.000020>
13:28:46 ioctl(3, FIONREAD, [1])        = 0 <0.000019>
13:28:46 read(3, "\r", 1)               = 1 <0.000020>
13:28:46 ioctl(3, FIONREAD, [0])        = 0 <0.000016>
13:28:46 ioctl(3, FIONREAD, [0])        = 0 <0.000016>
13:28:46 write(3, "\r", 1)              = 1 <0.000032>
13:28:46 rt_sigprocmask(SIG_BLOCK, [CHLD], [QUIT ALRM CHLD PROF], 8) = 0 <0.000020>
13:28:46 kill(4294962889, SIGKILL)      = 0 <0.002883>
13:28:46 --- SIGIO (I/O possible) @ 0 (0) ---
13:28:46 rt_sigreturn(0x1d)             = 0 <0.000021>
13:28:46 rt_sigprocmask(SIG_SETMASK, [QUIT ALRM CHLD PROF], NULL, 8) = 0 <0.000016>
13:28:46 ioctl(3, FIONREAD, [0])        = 0 <0.000018>
13:28:46 rt_sigprocmask(SIG_BLOCK, [CHLD], [QUIT ALRM CHLD PROF], 8) = 0 <0.000017>
13:28:46 kill(4294962889, SIGHUP)       = 0 <0.000017>
13:28:46 rt_sigprocmask(SIG_SETMASK, [QUIT ALRM CHLD PROF], NULL, 8) = 0 <0.000016>
13:28:46 rt_sigprocmask(SIG_BLOCK, [CHLD], [QUIT ALRM CHLD PROF], 8) = 0 <0.000017>
13:28:46 kill(4294962821, SIGKILL)      = 0 <0.004785>
13:28:46 rt_sigprocmask(SIG_SETMASK, [QUIT ALRM CHLD PROF], NULL, 8) = 0 <0.000017>
13:28:46 rt_sigprocmask(SIG_BLOCK, [CHLD], [QUIT ALRM CHLD PROF], 8) = 0 <0.000017>
13:28:46 kill(4294962821, SIGHUP)       = 0 <0.000019>
13:28:46 rt_sigprocmask(SIG_SETMASK, [QUIT ALRM CHLD PROF], NULL, 8) = 0 <0.000015>
13:28:46 rt_sigprocmask(SIG_BLOCK, [WINCH IO], NULL, 8) = 0 <0.000022>
13:28:46 write(3, "\33[K\33[46;1H", 10) = 10 <0.000028>
13:28:46 rt_sigprocmask(SIG_UNBLOCK, [WINCH IO], NULL, 8) = 0 <0.000016>
13:28:46 ioctl(3, FIONREAD, [0])        = 0 <0.000021>
13:28:46 pselect6(18, [3 4 5 7 8 11 13 17], [], NULL, {0, 262002641}, {NULL, 8}) = 2 (in [13 17], left {0, 261989573}) <0.000029>
13:28:46 read(13, "", 4096)             = 0 <0.000017>
13:28:46 read(17, "", 4096)             = 0 <0.000016>
13:28:46 ioctl(3, FIONREAD, [0])        = 0 <0.000019>
13:28:46 pselect6(18, [3 4 5 7 8 11 13 17], [], NULL, {0, 261495320}, {NULL, 8}) = 2 (in [13 17], left {0, 261485907}) <0.000030>
13:28:46 read(13, "", 4096)             = 0 <0.000017> 
13:28:46 read(17, "", 4096)             = 0 <0.000015>

[...]

13:289:02 --- SIGIO (I/O possible) @ 0 (0) --- 
13:289:02 rt_sigreturn(0x1d)             = 3 <0.000010> 
13:289:02 ioctl(3, FIONREAD, [1])        = 0 <0.000008> 
13:289:02 read(3, "d", 1)                = 1 <0.000009> 
13:289:02 ioctl(3, FIONREAD, [0])        = 0 <0.000007> 
13:289:02 ioctl(3, FIONREAD, [0])        = 0 <0.000007> 
13:289:02 rt_sigprocmask(SIG_BLOCK, [CHLD], [QUIT ALRM CHLD PROF], 8) = 0 <0.000014> 
13:289:02 kill(4294962821, SIGKILL)      = 0 <0.000010> 
13:289:02 rt_sigprocmask(SIG_SETMASK, [QUIT ALRM CHLD PROF], NULL, 8) = 0 <0.000008> 
13:289:02 close(12)                      = 0 <0.000015> 
13:289:02 close(13)                      = 0 <0.000012>
13:289:02 rt_sigprocmask(SIG_BLOCK, [WINCH IO], NULL, 8) = 0 <0.000012>
13:289:02 rt_sigprocmask(SIG_UNBLOCK, [WINCH IO], NULL, 8) = 0 <0.000010>
13:289:02 rt_sigprocmask(SIG_BLOCK, [WINCH IO], NULL, 8) = 0 <0.012141>
13:289:02 write(3, "\33[1;8r\33[3;1H\33[1M\33[1;50r", 23) = 23 <0.000018>
13:289:02 write(3, "\33[8;1H\33[K\33[H\n", 13) = 13 <0.000015>
13:289:02 rt_sigprocmask(SIG_UNBLOCK, [WINCH IO], NULL, 8) = 0 <0.000010>
13:289:02 --- SIGIO (I/O possible) @ 0 (0) ---
13:289:02 rt_sigreturn(0x1d)             = 0 <0.000011>
13:289:02 ioctl(3, FIONREAD, [0])        = 0 <0.000011>
13:289:02 ioctl(3, FIONREAD, [0])        = 0 <0.000010>
13:289:02 pselect6(18, [3 4 5 7 8 11 17], [], NULL, {0, 206805058}, {NULL, 8}) = 1 (in [17], left {0, 206797159}) <0.000017> 
13:289:02 read(17, "", 4096)             = 0 <0.000009> 
13:289:02 pselect6(18, [3 4 5 7 8 11 17], [], NULL, {0, 206700816}, {NULL, 8}) = 1 (in [17], left {0, 206697015}) <0.000013> 
13:289:02 read(17, "", 4096)             = 0 <0.000008>

[...]

13:289:03 --- SIGIO (I/O possible) @ 0 (0) ---
13:289:03 rt_sigreturn(0x1d)             = 2 <0.000009>
13:289:03 ioctl(3, FIONREAD, [1])        = 0 <0.000008>
13:289:03 read(3, "d", 1)                = 1 <0.000008>
13:289:03 ioctl(3, FIONREAD, [0])        = 0 <0.000006>
13:289:03 ioctl(3, FIONREAD, [0])        = 0 <0.000006>
13:289:03 rt_sigprocmask(SIG_BLOCK, [CHLD], [QUIT ALRM CHLD PROF], 8) = 0 <0.000007> 
13:289:03 kill(4294962889, SIGKILL)      = 0 <0.000011>
13:289:03 rt_sigprocmask(SIG_SETMASK, [QUIT ALRM CHLD PROF], NULL, 8) = 0 <0.000007> 
13:289:03 close(16)                      = 0 <0.000013>
13:289:03 close(17)                      = 0 <0.000012>
13:289:03 rt_sigprocmask(SIG_BLOCK, [WINCH IO], NULL, 8) = 0 <0.000010>
13:289:03 rt_sigprocmask(SIG_UNBLOCK, [WINCH IO], NULL, 8) = 0 <0.000009>
13:289:03 rt_sigprocmask(SIG_BLOCK, [WINCH IO], NULL, 8) = 0 <0.000010>
13:289:03 write(3, "\33[1;7r\33[2;1H\33[1M\33[1;50r", 23) = 23 <0.000012>
13:289:03 write(3, "\33[7;1H\33[K\33[H\n", 13) = 13 <0.000012>
13:289:03 rt_sigprocmask(SIG_UNBLOCK, [WINCH IO], NULL, 8) = 0 <0.000007>

Back to normal.

Regards,
Jorgen