From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Jason S. Cornez" Newsgroups: gmane.emacs.bugs Subject: bug#6585: 23.1; Hang / CPU 100% on background interaction when in minibuffer Date: Tue, 31 Aug 2010 17:09:49 +0200 Message-ID: <4C7D1B3D.1030607@ravenpack.com> References: <20100708141906.C46AE80333@dev268-l> <4C7CA46A.7010001@ravenpack.com> <4C7CDAB6.3090308@ravenpack.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Trace: dough.gmane.org 1283269204 9125 80.91.229.12 (31 Aug 2010 15:40:04 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 31 Aug 2010 15:40:04 +0000 (UTC) To: 6585@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Aug 31 17:39:59 2010 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1OqSwF-0004SP-MX for geb-bug-gnu-emacs@m.gmane.org; Tue, 31 Aug 2010 17:39:56 +0200 Original-Received: from localhost ([127.0.0.1]:46768 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OqSwE-0000uJ-JI for geb-bug-gnu-emacs@m.gmane.org; Tue, 31 Aug 2010 11:39:54 -0400 Original-Received: from [140.186.70.92] (port=39146 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OqSw6-0000ou-87 for bug-gnu-emacs@gnu.org; Tue, 31 Aug 2010 11:39:47 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OqSw4-0007db-Ix for bug-gnu-emacs@gnu.org; Tue, 31 Aug 2010 11:39:45 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:49214) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OqSw4-0007dV-GG for bug-gnu-emacs@gnu.org; Tue, 31 Aug 2010 11:39:44 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1OqSSL-0008D7-Qu; Tue, 31 Aug 2010 11:09:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: "Jason S. Cornez" Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 31 Aug 2010 15:09:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6585 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 6585-submit@debbugs.gnu.org id=B6585.128326729931544 (code B ref 6585); Tue, 31 Aug 2010 15:09:01 +0000 Original-Received: (at 6585) by debbugs.gnu.org; 31 Aug 2010 15:08:19 +0000 Original-Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OqSRe-0008Cj-BI for submit@debbugs.gnu.org; Tue, 31 Aug 2010 11:08:19 -0400 Original-Received: from out1.smtp.messagingengine.com ([66.111.4.25]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OqSRc-0008Ce-A8 for 6585@debbugs.gnu.org; Tue, 31 Aug 2010 11:08:16 -0400 Original-Received: from compute3.internal (compute3.nyi.mail.srv.osa [10.202.2.43]) by gateway1.messagingengine.com (Postfix) with ESMTP id 49D361A1 for <6585@debbugs.gnu.org>; Tue, 31 Aug 2010 11:09:54 -0400 (EDT) Original-Received: from frontend2.messagingengine.com ([10.202.2.161]) by compute3.internal (MEProxy); Tue, 31 Aug 2010 11:09:54 -0400 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=messagingengine.com; h=message-id:date:from:mime-version:to:subject:references:in-reply-to:content-type:content-transfer-encoding; s=smtpout; bh=V2xkspD2gZH3SVQLObbZAt8IuU0=; b=Gvy5Yc+4sTqRg96qMmhS7zM/nuQ2Somwr0seWnHD1B9N6bSetZlfWoGWFQFB1TBsSKPK0KKRcIG1eJ53zIj5TIevyflmigXYtlmsc05iiTV0EUBh5jmRciOpk9i7KTR7C1LL/Lyo35R//2SdIw4GGNza7HqR9yZcQzw/SXfQkBM= X-Sasl-enc: bctTyoeYXnddc/rFTyZoBp/gYCGPPZHdKGWM/pj6J9k7 1283267393 Original-Received: from [10.1.3.5] (89.Red-83-36-62.staticIP.rima-tde.net [83.36.62.89]) by mail.messagingengine.com (Postfix) with ESMTPSA id 7A3705EE7BF for <6585@debbugs.gnu.org>; Tue, 31 Aug 2010 11:09:52 -0400 (EDT) User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9pre) Gecko/20100821 Lanikai/3.1.3pre ThunderBrowse/3.3.2 In-Reply-To: X-Enigmail-Version: 1.1.2 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Resent-Date: Tue, 31 Aug 2010 11:09:01 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:39860 Archived-At: On 08/31/2010 03:09 PM, Stefan Monnier wrote: > 100% agreement. Patch welcome, > > > Stefan How about something like this... ----8<---- src/keyboard.c /usr/local/emacs-23.2/src/keyboard.c *** src/keyboard.c 2010-04-04 00:26:07.000000000 +0200 --- /usr/local/emacs-23.2/src/keyboard.c 2010-08-31 17:03:14.648740153 +0200 *************** interrupt_signal (signalnum) /* If we do *** 11122,11127 **** --- 11122,11136 ---- errno = old_errno; } + + /* JSC: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6585 */ + + /* If emacs is stuck because `inhibit-quit' is true, then keep track + of the number of times C-g has been requested. If C-g is pressed 3 + times, then quit anyway. If `debug-on-quit' is true, then it is + honored when the quit occurs after the third C-g. */ + static int force_quit_count; + /* This routine is called at interrupt level in response to C-g. It is called from the SIGINT handler or kbd_buffer_store_event. *************** handle_interrupt () *** 11239,11246 **** UNGCPRO; } else ! /* Else request quit when it's safe */ ! Vquit_flag = Qt; } /* TODO: The longjmp in this call throws the NS event loop integration off, --- 11248,11266 ---- UNGCPRO; } else ! { ! /* Else request quit when it's safe */ ! if (NILP (Vquit_flag)) ! { ! force_quit_count = 0; ! } ! if (++force_quit_count == 3) ! { ! immediate_quit = 1; ! Vinhibit_quit = Qnil; ! } ! Vquit_flag = Qt; ! } } /* TODO: The longjmp in this call throws the NS event loop integration off, ----8<---- This does indeed solve the problem for me. But I freely admit that I've never done emacs development before and so something more may be required or desired. Anyway, this is certain a start and I hope it helps. Best, -Jason