GNU bug report logs - #38035
27.0.50; Trivial errors in process filters can render Emacs unusable

Previous Next

Package: emacs;

Reported by: Lars Ingebrigtsen <larsi <at> gnus.org>

Date: Sat, 2 Nov 2019 17:55:01 UTC

Severity: normal

Found in version 27.0.50

Fixed in version 29.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

Full log


Message #8 received at 38035 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: 38035 <at> debbugs.gnu.org
Subject: Re: bug#38035: 27.0.50;
 Trivial errors in process filters can render Emacs unusable
Date: Sat, 02 Nov 2019 20:36:03 +0200
> From: Lars Ingebrigtsen <larsi <at> gnus.org>
> Date: Sat, 02 Nov 2019 18:53:57 +0100
> 
> (let ((process (start-process
> 		"foo" (get-buffer-create "*foo*")
> 		"bash" "-c" "while true; do echo foo; sleep 1; done")))
>   (set-process-filter
>    process
>    (lambda (&rest _)
>      (error))))
> 
> The reason for this is that when signalling an error from a process
> filter, Emacs messages the error message and then seems to sleep for a
> second?

Yes, see read_process_output_error_handler (it's actually 2-sec
sleep), and read_and_dispose_of_process_output, where we set up for
calling the process filter.

> I'm not sure what solution would be best.  I see two obvious things we
> could do: Remove the process filter, so that it doesn't trigger again.
> Or -- remove the one-second sleep, which would allow the user to `M-x
> list-processes' and kill the offending process.

I'd suggest to count the number of times a process filter errors out,
and disable it after some configurable number.  Doing that on the
first error sounds too drastic: it could be a one-time spurious error.




This bug report was last modified 3 years and 176 days ago.

Previous Next


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