Subject: Re: bug#6585: 23.1; Hang / CPU 100% on background interaction when in minibuffer

From: Stefan Monnier <[email-masked]>
Date: Tue, 31 Aug 2010 12:24:29 +0200

> Of course, fixing the elisp function is easy and that simply and
> effectively avoids this problem.  Still, I find it disconcerting that I
> can lockup emacs in such a manner.

All code run from timers and from (post|pre)-command-hook (as well as
jit-lock, filters, and a few other things) is run with inhibit-quit set
to t because the user may not know this code is running so if she hits
C-g it "probably" means she wants to interrupt something else.

It's not broken.  Basically, the problem is in your code: such async
code should not run for indefinite amount of time, whereas your code may
inf-loop.

2 solutions:
- fix your code so it doesn't inf-loop (usually the best solution).
- wrap your code in with-local-quit to let C-g interrupt it.

Admittedly, Emacs should also additionally understand something like C-g
C-g C-g C-g as a sign that the user is getting impatient and we should
thus ignore the inhibit-quit flag.  But such a case is always a sign of
a bug somewhere.

        Stefan