From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#28279: 25.2; repeatable crash when hitting C-g twice Date: Wed, 30 Aug 2017 19:46:36 +0300 Message-ID: <8360d52ec3.fsf@gnu.org> References: <85fuca2q3p.fsf@zeitgeist.tenuki.org> <92efrub1vf.fsf@fencepost.gnu.org> Reply-To: Eli Zaretskii NNTP-Posting-Host: blaine.gmane.org X-Trace: blaine.gmane.org 1504111703 20021 195.159.176.226 (30 Aug 2017 16:48:23 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 30 Aug 2017 16:48:23 +0000 (UTC) Cc: yuri@tenuki.org, 28279@debbugs.gnu.org To: Glenn Morris Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Aug 30 18:48:17 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dn69y-0004WF-28 for geb-bug-gnu-emacs@m.gmane.org; Wed, 30 Aug 2017 18:48:10 +0200 Original-Received: from localhost ([::1]:51593 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dn6A5-0007bV-2l for geb-bug-gnu-emacs@m.gmane.org; Wed, 30 Aug 2017 12:48:17 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:54726) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dn69w-0007a2-8u for bug-gnu-emacs@gnu.org; Wed, 30 Aug 2017 12:48:09 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dn69q-0002hK-BK for bug-gnu-emacs@gnu.org; Wed, 30 Aug 2017 12:48:08 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:54372) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dn69q-0002hG-7Y for bug-gnu-emacs@gnu.org; Wed, 30 Aug 2017 12:48:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1dn69q-0006tR-0M for bug-gnu-emacs@gnu.org; Wed, 30 Aug 2017 12:48:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 30 Aug 2017 16:48:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28279 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 28279-submit@debbugs.gnu.org id=B28279.150411162926430 (code B ref 28279); Wed, 30 Aug 2017 16:48:01 +0000 Original-Received: (at 28279) by debbugs.gnu.org; 30 Aug 2017 16:47:09 +0000 Original-Received: from localhost ([127.0.0.1]:34819 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dn68y-0006sE-W0 for submit@debbugs.gnu.org; Wed, 30 Aug 2017 12:47:09 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:35300) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dn68x-0006s0-8E for 28279@debbugs.gnu.org; Wed, 30 Aug 2017 12:47:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dn68n-0002Os-6o for 28279@debbugs.gnu.org; Wed, 30 Aug 2017 12:47:02 -0400 Original-Received: from fencepost.gnu.org ([2001:4830:134:3::e]:41302) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dn68n-0002Oo-3g; Wed, 30 Aug 2017 12:46:57 -0400 Original-Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2221 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1dn68l-00074h-NI; Wed, 30 Aug 2017 12:46:56 -0400 In-reply-to: <92efrub1vf.fsf@fencepost.gnu.org> (message from Glenn Morris on Tue, 29 Aug 2017 15:38:44 -0400) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 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: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:136385 Archived-At: > From: Glenn Morris > Date: Tue, 29 Aug 2017 15:38:44 -0400 > Cc: 28279@debbugs.gnu.org > > Eric Hoffman wrote: > > > 0x4ad7a3 at /usr/home/yuri/emacs-25.2/src/emacs-25.2.1 > > 0x50c474 at /usr/home/yuri/emacs-25.2/src/emacs-25.2.1 > > 0x512cf5 at /usr/home/yuri/emacs-25.2/src/emacs-25.2.1 > > 0x48cfbe at /usr/home/yuri/emacs-25.2/src/emacs-25.2.1 > > 0x48c1e7 at /usr/home/yuri/emacs-25.2/src/emacs-25.2.1 > > This appears to be https://debbugs.gnu.org/17406 Does the below look reasonable for a fix? diff --git a/src/term.c b/src/term.c index 87a4126..5042abf 100644 --- a/src/term.c +++ b/src/term.c @@ -156,13 +156,17 @@ static void tty_send_additional_strings (struct terminal *terminal, Lisp_Object sym) { Lisp_Object lisp_terminal; - Lisp_Object extra_codes; struct tty_display_info *tty = terminal->display_info.tty; XSETTERMINAL (lisp_terminal, terminal); - for (extra_codes = Fterminal_parameter (lisp_terminal, sym); - CONSP (extra_codes); - extra_codes = XCDR (extra_codes)) + /* We use CDR_SAFE and assq_no_quit to avoid any form of quitting or + signaling an error, since this function can run as part of the + "emergency escape" procedure invoked in the middle of GC, where + quitting means we crash. */ + Lisp_Object extra_codes = + CDR_SAFE (assq_no_quit (sym, + decode_live_terminal (lisp_terminal)->param_alist)); + for ( ; CONSP (extra_codes); extra_codes = XCDR (extra_codes)) { Lisp_Object string = XCAR (extra_codes); if (STRINGP (string))