From unknown Tue Aug 19 02:56:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#18140: [PATCH] macros.c: CHECK_VECTOR_OR_STRING invokes wrong_type_argument for Qnil instead of return 0 Resent-From: Jan Chaloupka Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 29 Jul 2014 05:03:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 18140 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 18140@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.140661015911471 (code B ref -1); Tue, 29 Jul 2014 05:03:02 +0000 Received: (at submit) by debbugs.gnu.org; 29 Jul 2014 05:02:39 +0000 Received: from localhost ([127.0.0.1]:41533 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XBzYc-0002yx-3c for submit@debbugs.gnu.org; Tue, 29 Jul 2014 01:02:38 -0400 Received: from eggs.gnu.org ([208.118.235.92]:48203) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XBzYY-0002ye-Rm for submit@debbugs.gnu.org; Tue, 29 Jul 2014 01:02:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XBzYK-0008TK-K4 for submit@debbugs.gnu.org; Tue, 29 Jul 2014 01:02:29 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_40 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:37611) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XBzYK-0008TF-Gt for submit@debbugs.gnu.org; Tue, 29 Jul 2014 01:02:20 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49851) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XBzYC-00025N-Ub for bug-gnu-emacs@gnu.org; Tue, 29 Jul 2014 01:02:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XBzY5-0008GV-Ew for bug-gnu-emacs@gnu.org; Tue, 29 Jul 2014 01:02:12 -0400 Received: from mx1.redhat.com ([209.132.183.28]:29214) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XBzY5-0008GO-8b for bug-gnu-emacs@gnu.org; Tue, 29 Jul 2014 01:02:05 -0400 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s6T523nP001390 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 29 Jul 2014 01:02:03 -0400 Received: from unused-4-157.brq.redhat.com (unused-4-228.brq.redhat.com [10.34.4.228]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s6T521s2015905 for ; Tue, 29 Jul 2014 01:02:02 -0400 Message-ID: <53D72AC6.108@redhat.com> Date: Tue, 29 Jul 2014 07:01:58 +0200 From: Jan Chaloupka User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 References: <20140728103721.7115.54163.stgit@unused-4-157.brq.redhat.com> In-Reply-To: <20140728103721.7115.54163.stgit@unused-4-157.brq.redhat.com> X-Forwarded-Message-Id: <20140728103721.7115.54163.stgit@unused-4-157.brq.redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.26 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) In function Fstart_kbd_macro (macros.c), Vlast_kbd_macro of current_kboard is Qnil for the first invocation. If NILP (append) is false, current_kboard->kbd_macro_ptr has random value (in our case 0x5353535353535353), which after CHECK_VECTOR_OR_STRING failure (invocation of wrong_type_argument) results in garbage collecting. During gc, marking of objects is processed and mark_kboards (keyboard.c) is invoked. Following for loop is fired: for (p = kb->kbd_macro_buffer; p < kb->kbd_macro_ptr; p++) mark_object (*p); Since kb->kbd_macro_ptr is set to 0x5353535353535353, mark_object (*p) is trying to mark object on address out of memory space (or memory that cannot be accessed). Thus resulting in SIGSEGV signal. Solution is to check for Qnil before calling CHECK_VECTOR_OR_STRING and set len to 0 if Qnil occurs. https://bugzilla.redhat.com/show_bug.cgi?id=1104012 Signed-off-by: Jan Chaloupka --- src/macros.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/macros.c b/src/macros.c index 4730a8b..219eb39 100644 --- a/src/macros.c +++ b/src/macros.c @@ -85,7 +85,23 @@ macro before appending to it. */) bool cvt; /* Check the type of last-kbd-macro in case Lisp code changed it. */ - len = CHECK_VECTOR_OR_STRING (KVAR (current_kboard, Vlast_kbd_macro)); + /* If Vlast_kbd_macro is Qnil, skip the check and set len to 0. + * Flength returns 0 for Qnil, CHECK_VECTOR_OR_STRING has to do the same. + * Otherwise CHECK_VECTOR_OR_STRING fails and results in garbage collecting, + * which results in (keyboard.c, mark_kboards(void)) + * + * for (p = kb->kbd_macro_buffer; p < kb->kbd_macro_ptr; p++) + * mark_object (*p); + * + * Here, kb->kbd_macro_ptr is not initialized and can contain address + * 0x5353535353535353, which results in SIGSEGV trying to access the address. + * + * https://bugzilla.redhat.com/show_bug.cgi?id=1104012 + */ + if (!NILP (KVAR (current_kboard, Vlast_kbd_macro) )) + len = CHECK_VECTOR_OR_STRING (KVAR (current_kboard, Vlast_kbd_macro)); + else + len = 0; /* Copy last-kbd-macro into the buffer, in case the Lisp code has put another macro there. */ From unknown Tue Aug 19 02:56:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#18140: [PATCH] macros.c: CHECK_VECTOR_OR_STRING invokes wrong_type_argument for Qnil instead of return 0 Resent-From: Jan Chaloupka Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 29 Jul 2014 05:36:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 18140 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 18140@debbugs.gnu.org Received: via spool by 18140-submit@debbugs.gnu.org id=B18140.140661211214945 (code B ref 18140); Tue, 29 Jul 2014 05:36:02 +0000 Received: (at 18140) by debbugs.gnu.org; 29 Jul 2014 05:35:12 +0000 Received: from localhost ([127.0.0.1]:41542 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC047-0003sz-A2 for submit@debbugs.gnu.org; Tue, 29 Jul 2014 01:35:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:44824) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC044-0003sm-1B for 18140@debbugs.gnu.org; Tue, 29 Jul 2014 01:35:09 -0400 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s6T5Z5jj016481 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for <18140@debbugs.gnu.org>; Tue, 29 Jul 2014 01:35:05 -0400 Received: from unused-4-157.brq.redhat.com (unused-4-228.brq.redhat.com [10.34.4.228]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s6T5Z4wL027521 for <18140@debbugs.gnu.org>; Tue, 29 Jul 2014 01:35:05 -0400 Message-ID: <53D73287.6020406@redhat.com> Date: Tue, 29 Jul 2014 07:35:03 +0200 From: Jan Chaloupka User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 References: <20140729053056.14713.45327.stgit@unused-4-157.brq.redhat.com> In-Reply-To: <20140729053056.14713.45327.stgit@unused-4-157.brq.redhat.com> X-Forwarded-Message-Id: <20140729053056.14713.45327.stgit@unused-4-157.brq.redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.26 X-Spam-Score: -5.7 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.7 (-----) Changelog: line wrapping to 80 characters In function Fstart_kbd_macro (macros.c), Vlast_kbd_macro of current_kboard is Qnil for the first invocation. If NILP (append) is false, current_kboard->kbd_macro_ptr has random value (in our case 0x5353535353535353), which after CHECK_VECTOR_OR_STRING failure (invocation of wrong_type_argument) results in garbage collecting. During gc, marking of objects is processed and mark_kboards (keyboard.c) is invoked. Following for loop is fired: for (p = kb->kbd_macro_buffer; p < kb->kbd_macro_ptr; p++) mark_object (*p); Since kb->kbd_macro_ptr is set to 0x5353535353535353, mark_object (*p) is trying to mark object on address out of memory space (or memory that cannot be accessed). Thus resulting in SIGSEGV signal. Solution is to check for Qnil before calling CHECK_VECTOR_OR_STRING and set len to 0 if Qnil occurs. https://bugzilla.redhat.com/show_bug.cgi?id=1104012 Signed-off-by: Jan Chaloupka --- src/macros.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/macros.c b/src/macros.c index 4730a8b..4fd6cb1 100644 --- a/src/macros.c +++ b/src/macros.c @@ -85,7 +85,25 @@ macro before appending to it. */) bool cvt; /* Check the type of last-kbd-macro in case Lisp code changed it. */ - len = CHECK_VECTOR_OR_STRING (KVAR (current_kboard, Vlast_kbd_macro)); + /* If Vlast_kbd_macro is Qnil, skip the check and set len to 0. + * Flength returns 0 for Qnil, CHECK_VECTOR_OR_STRING has to do the same. + * Otherwise CHECK_VECTOR_OR_STRING fails and results in garbage + * collecting, which results in (keyboard.c, mark_kboards(void)). + * Among others, mark_kboards it executes: + * + * for (p = kb->kbd_macro_buffer; p < kb->kbd_macro_ptr; p++) + * mark_object (*p); + * + * Here, kb->kbd_macro_ptr is not initialized and can contain address + * 0x5353535353535353, which results in SIGSEGV trying to access + * the address. + * + * https://bugzilla.redhat.com/show_bug.cgi?id=1104012 + */ + if (!NILP (KVAR (current_kboard, Vlast_kbd_macro) )) + len = CHECK_VECTOR_OR_STRING (KVAR (current_kboard, Vlast_kbd_macro)); + else + len = 0; /* Copy last-kbd-macro into the buffer, in case the Lisp code has put another macro there. */ From unknown Tue Aug 19 02:56:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#18140: [PATCH] macros.c: CHECK_VECTOR_OR_STRING invokes wrong_type_argument for Qnil instead of return 0 Resent-From: Andreas Schwab Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 29 Jul 2014 07:53:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 18140 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Jan Chaloupka Cc: 18140@debbugs.gnu.org Received: via spool by 18140-submit@debbugs.gnu.org id=B18140.140662035827632 (code B ref 18140); Tue, 29 Jul 2014 07:53:02 +0000 Received: (at 18140) by debbugs.gnu.org; 29 Jul 2014 07:52:38 +0000 Received: from localhost ([127.0.0.1]:41585 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC2D7-0007Bb-MW for submit@debbugs.gnu.org; Tue, 29 Jul 2014 03:52:37 -0400 Received: from cantor2.suse.de ([195.135.220.15]:46940 helo=mx2.suse.de) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC2D6-0007BT-70 for 18140@debbugs.gnu.org; Tue, 29 Jul 2014 03:52:36 -0400 Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 0A294ACB4; Tue, 29 Jul 2014 07:52:35 +0000 (UTC) From: Andreas Schwab References: <20140729053056.14713.45327.stgit@unused-4-157.brq.redhat.com> <53D73287.6020406@redhat.com> X-Yow: I guess it was all a DREAM.. or an episode of HAWAII FIVE-O... Date: Tue, 29 Jul 2014 09:52:34 +0200 In-Reply-To: <53D73287.6020406@redhat.com> (Jan Chaloupka's message of "Tue, 29 Jul 2014 07:35:03 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -5.7 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.7 (-----) Jan Chaloupka writes: > Changelog: > line wrapping to 80 characters > > In function Fstart_kbd_macro (macros.c), Vlast_kbd_macro of current_kboard is > Qnil for the first invocation. If NILP (append) is false, > current_kboard->kbd_macro_ptr has random value (in our case > 0x5353535353535353), which after CHECK_VECTOR_OR_STRING failure (invocation > of wrong_type_argument) results in garbage collecting. > During gc, marking of objects is processed and mark_kboards (keyboard.c) is > invoked. Following for loop is fired: > > for (p = kb->kbd_macro_buffer; p < kb->kbd_macro_ptr; p++) > mark_object (*p); > > Since kb->kbd_macro_ptr is set to 0x5353535353535353, mark_object (*p) is > trying to mark object on address out of memory space (or memory that > cannot be accessed). Thus resulting in SIGSEGV signal. So the correct solution is to initialize kbd_macro_ptr together with kbd_macro_buffer. Otherwise the same situation can still happen any time garbage collection is called. Andreas. -- Andreas Schwab, SUSE Labs, schwab@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different." From unknown Tue Aug 19 02:56:16 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.503 (Entity 5.503) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Jan Chaloupka Subject: bug#18140: closed (Re: bug#18140: [PATCH] macros.c: CHECK_VECTOR_OR_STRING invokes wrong_type_argument for Qnil instead of return 0) Message-ID: References: <53D72AC6.108@redhat.com> X-Gnu-PR-Message: they-closed 18140 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 18140@debbugs.gnu.org Date: Tue, 29 Jul 2014 08:11:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1406621462-29326-1" This is a multi-part message in MIME format... ------------=_1406621462-29326-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #18140: [PATCH] macros.c: CHECK_VECTOR_OR_STRING invokes wrong_type_argumen= t for Qnil instead of return 0 which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 18140@debbugs.gnu.org. --=20 18140: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D18140 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1406621462-29326-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 18140-done) by debbugs.gnu.org; 29 Jul 2014 08:10:14 +0000 Received: from localhost ([127.0.0.1]:41590 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC2UA-0007c0-B2 for submit@debbugs.gnu.org; Tue, 29 Jul 2014 04:10:14 -0400 Received: from cantor2.suse.de ([195.135.220.15]:47420 helo=mx2.suse.de) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC2U8-0007bs-7U for 18140-done@debbugs.gnu.org; Tue, 29 Jul 2014 04:10:13 -0400 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 8BCD9ACB4; Tue, 29 Jul 2014 08:10:11 +0000 (UTC) From: Andreas Schwab To: Jan Chaloupka Subject: Re: bug#18140: [PATCH] macros.c: CHECK_VECTOR_OR_STRING invokes wrong_type_argument for Qnil instead of return 0 References: <20140729053056.14713.45327.stgit@unused-4-157.brq.redhat.com> <53D73287.6020406@redhat.com> X-Yow: YOW!! What should the entire human race DO?? Consume a fifth of CHIVAS REGAL, ski NUDE down MT. EVEREST, and have a wild SEX WEEKEND! Date: Tue, 29 Jul 2014 10:10:11 +0200 In-Reply-To: <53D73287.6020406@redhat.com> (Jan Chaloupka's message of "Tue, 29 Jul 2014 07:35:03 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -5.7 (-----) X-Debbugs-Envelope-To: 18140-done Cc: 18140-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.7 (-----) Fixed for emacs 24.4. Thanks for the report. Andreas. -- Andreas Schwab, SUSE Labs, schwab@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different." ------------=_1406621462-29326-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 29 Jul 2014 05:02:39 +0000 Received: from localhost ([127.0.0.1]:41533 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XBzYc-0002yx-3c for submit@debbugs.gnu.org; Tue, 29 Jul 2014 01:02:38 -0400 Received: from eggs.gnu.org ([208.118.235.92]:48203) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XBzYY-0002ye-Rm for submit@debbugs.gnu.org; Tue, 29 Jul 2014 01:02:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XBzYK-0008TK-K4 for submit@debbugs.gnu.org; Tue, 29 Jul 2014 01:02:29 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_40 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:37611) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XBzYK-0008TF-Gt for submit@debbugs.gnu.org; Tue, 29 Jul 2014 01:02:20 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49851) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XBzYC-00025N-Ub for bug-gnu-emacs@gnu.org; Tue, 29 Jul 2014 01:02:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XBzY5-0008GV-Ew for bug-gnu-emacs@gnu.org; Tue, 29 Jul 2014 01:02:12 -0400 Received: from mx1.redhat.com ([209.132.183.28]:29214) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XBzY5-0008GO-8b for bug-gnu-emacs@gnu.org; Tue, 29 Jul 2014 01:02:05 -0400 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s6T523nP001390 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 29 Jul 2014 01:02:03 -0400 Received: from unused-4-157.brq.redhat.com (unused-4-228.brq.redhat.com [10.34.4.228]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s6T521s2015905 for ; Tue, 29 Jul 2014 01:02:02 -0400 Message-ID: <53D72AC6.108@redhat.com> Date: Tue, 29 Jul 2014 07:01:58 +0200 From: Jan Chaloupka User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: bug-gnu-emacs@gnu.org Subject: [PATCH] macros.c: CHECK_VECTOR_OR_STRING invokes wrong_type_argument for Qnil instead of return 0 References: <20140728103721.7115.54163.stgit@unused-4-157.brq.redhat.com> In-Reply-To: <20140728103721.7115.54163.stgit@unused-4-157.brq.redhat.com> X-Forwarded-Message-Id: <20140728103721.7115.54163.stgit@unused-4-157.brq.redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.26 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) In function Fstart_kbd_macro (macros.c), Vlast_kbd_macro of current_kboard is Qnil for the first invocation. If NILP (append) is false, current_kboard->kbd_macro_ptr has random value (in our case 0x5353535353535353), which after CHECK_VECTOR_OR_STRING failure (invocation of wrong_type_argument) results in garbage collecting. During gc, marking of objects is processed and mark_kboards (keyboard.c) is invoked. Following for loop is fired: for (p = kb->kbd_macro_buffer; p < kb->kbd_macro_ptr; p++) mark_object (*p); Since kb->kbd_macro_ptr is set to 0x5353535353535353, mark_object (*p) is trying to mark object on address out of memory space (or memory that cannot be accessed). Thus resulting in SIGSEGV signal. Solution is to check for Qnil before calling CHECK_VECTOR_OR_STRING and set len to 0 if Qnil occurs. https://bugzilla.redhat.com/show_bug.cgi?id=1104012 Signed-off-by: Jan Chaloupka --- src/macros.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/macros.c b/src/macros.c index 4730a8b..219eb39 100644 --- a/src/macros.c +++ b/src/macros.c @@ -85,7 +85,23 @@ macro before appending to it. */) bool cvt; /* Check the type of last-kbd-macro in case Lisp code changed it. */ - len = CHECK_VECTOR_OR_STRING (KVAR (current_kboard, Vlast_kbd_macro)); + /* If Vlast_kbd_macro is Qnil, skip the check and set len to 0. + * Flength returns 0 for Qnil, CHECK_VECTOR_OR_STRING has to do the same. + * Otherwise CHECK_VECTOR_OR_STRING fails and results in garbage collecting, + * which results in (keyboard.c, mark_kboards(void)) + * + * for (p = kb->kbd_macro_buffer; p < kb->kbd_macro_ptr; p++) + * mark_object (*p); + * + * Here, kb->kbd_macro_ptr is not initialized and can contain address + * 0x5353535353535353, which results in SIGSEGV trying to access the address. + * + * https://bugzilla.redhat.com/show_bug.cgi?id=1104012 + */ + if (!NILP (KVAR (current_kboard, Vlast_kbd_macro) )) + len = CHECK_VECTOR_OR_STRING (KVAR (current_kboard, Vlast_kbd_macro)); + else + len = 0; /* Copy last-kbd-macro into the buffer, in case the Lisp code has put another macro there. */ ------------=_1406621462-29326-1-- From unknown Tue Aug 19 02:56:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#18140: [PATCH] macros.c: CHECK_VECTOR_OR_STRING invokes wrong_type_argument for Qnil instead of return 0 Resent-From: Jan Chaloupka Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 29 Jul 2014 08:25:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 18140 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 18140@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.140662226630572 (code B ref -1); Tue, 29 Jul 2014 08:25:02 +0000 Received: (at submit) by debbugs.gnu.org; 29 Jul 2014 08:24:26 +0000 Received: from localhost ([127.0.0.1]:41597 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC2ht-0007x0-SP for submit@debbugs.gnu.org; Tue, 29 Jul 2014 04:24:26 -0400 Received: from eggs.gnu.org ([208.118.235.92]:44112) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC2hp-0007wl-QW for submit@debbugs.gnu.org; Tue, 29 Jul 2014 04:24:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XC2hb-0007ac-Ld for submit@debbugs.gnu.org; Tue, 29 Jul 2014 04:24:16 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:36407) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XC2hb-0007aY-Id for submit@debbugs.gnu.org; Tue, 29 Jul 2014 04:24:07 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45832) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XC2hV-00031Y-D2 for bug-gnu-emacs@gnu.org; Tue, 29 Jul 2014 04:24:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XC2hP-0007Z7-85 for bug-gnu-emacs@gnu.org; Tue, 29 Jul 2014 04:24:01 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48490) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XC2hO-0007Yz-V6 for bug-gnu-emacs@gnu.org; Tue, 29 Jul 2014 04:23:55 -0400 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s6T8NsXE014248 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 29 Jul 2014 04:23:54 -0400 Received: from unused-4-157.brq.redhat.com (unused-4-228.brq.redhat.com [10.34.4.228]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s6T8NrWM004835 for ; Tue, 29 Jul 2014 04:23:53 -0400 Message-ID: <53D75A18.8000508@redhat.com> Date: Tue, 29 Jul 2014 10:23:52 +0200 From: Jan Chaloupka User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 References: <20140729053056.14713.45327.stgit@unused-4-157.brq.redhat.com> <53D73287.6020406@redhat.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) On 07/29/2014 09:52 AM, Andreas Schwab wrote: > Jan Chaloupka writes: > >> Changelog: >> line wrapping to 80 characters >> >> In function Fstart_kbd_macro (macros.c), Vlast_kbd_macro of current_kboard is >> Qnil for the first invocation. If NILP (append) is false, >> current_kboard->kbd_macro_ptr has random value (in our case >> 0x5353535353535353), which after CHECK_VECTOR_OR_STRING failure (invocation >> of wrong_type_argument) results in garbage collecting. >> During gc, marking of objects is processed and mark_kboards (keyboard.c) is >> invoked. Following for loop is fired: >> >> for (p = kb->kbd_macro_buffer; p < kb->kbd_macro_ptr; p++) >> mark_object (*p); >> >> Since kb->kbd_macro_ptr is set to 0x5353535353535353, mark_object (*p) is >> trying to mark object on address out of memory space (or memory that >> cannot be accessed). Thus resulting in SIGSEGV signal. > So the correct solution is to initialize kbd_macro_ptr together with > kbd_macro_buffer. Otherwise the same situation can still happen any > time garbage collection is called. Yes, for garbage collector. However, Vlast_kbd_macro will continue being Qnil. The patch is still valid (just without comment about random value of kbd_macro_ptr and garbage collection): In function Fstart_kbd_macro (macros.c), Vlast_kbd_macro of current_kboard is Qnil for the first invocation. If NILP (append) is false CHECK_VECTOR_OR_STRING fails (invocation of wrong_type_argument resulting in emacs_abort). However, it has to pass. > Andreas. > From unknown Tue Aug 19 02:56:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#18140: [PATCH] macros.c: CHECK_VECTOR_OR_STRING invokes wrong_type_argument for Qnil instead of return 0 Resent-From: Andreas Schwab Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 29 Jul 2014 08:38:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 18140 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Jan Chaloupka Cc: 18140@debbugs.gnu.org Received: via spool by 18140-submit@debbugs.gnu.org id=B18140.140662306731964 (code B ref 18140); Tue, 29 Jul 2014 08:38:02 +0000 Received: (at 18140) by debbugs.gnu.org; 29 Jul 2014 08:37:47 +0000 Received: from localhost ([127.0.0.1]:41602 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC2uo-0008JS-KP for submit@debbugs.gnu.org; Tue, 29 Jul 2014 04:37:47 -0400 Received: from cantor2.suse.de ([195.135.220.15]:47982 helo=mx2.suse.de) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC2ul-0008JI-AR for 18140@debbugs.gnu.org; Tue, 29 Jul 2014 04:37:44 -0400 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 88F4BACB4; Tue, 29 Jul 2014 08:37:42 +0000 (UTC) From: Andreas Schwab References: <20140729053056.14713.45327.stgit@unused-4-157.brq.redhat.com> <53D73287.6020406@redhat.com> <53D75A18.8000508@redhat.com> X-Yow: I'm pretending I'm pulling in a TROUT! Am I doing it correctly?? Date: Tue, 29 Jul 2014 10:37:42 +0200 In-Reply-To: <53D75A18.8000508@redhat.com> (Jan Chaloupka's message of "Tue, 29 Jul 2014 10:23:52 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -5.7 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.7 (-----) Jan Chaloupka writes: > Yes, for garbage collector. However, Vlast_kbd_macro will continue being > Qnil. Why is that a problem? That is the default value. > In function Fstart_kbd_macro (macros.c), Vlast_kbd_macro of current_kboard > is > Qnil for the first invocation. If NILP (append) is false > CHECK_VECTOR_OR_STRING fails (invocation > of wrong_type_argument resulting in emacs_abort). Where does it call emacs_abort? > However, it has to pass. Why? Andreas. -- Andreas Schwab, SUSE Labs, schwab@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different." From unknown Tue Aug 19 02:56:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#18140: [PATCH] macros.c: CHECK_VECTOR_OR_STRING invokes wrong_type_argument for Qnil instead of return 0 Resent-From: Jan Chaloupka Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 29 Jul 2014 08:56:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 18140 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 18140@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.14066241541216 (code B ref -1); Tue, 29 Jul 2014 08:56:01 +0000 Received: (at submit) by debbugs.gnu.org; 29 Jul 2014 08:55:54 +0000 Received: from localhost ([127.0.0.1]:41607 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC3CL-0000JY-S4 for submit@debbugs.gnu.org; Tue, 29 Jul 2014 04:55:54 -0400 Received: from eggs.gnu.org ([208.118.235.92]:48552) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC3CI-0000J9-A0 for submit@debbugs.gnu.org; Tue, 29 Jul 2014 04:55:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XC3C3-00083N-Mr for submit@debbugs.gnu.org; Tue, 29 Jul 2014 04:55:44 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_05 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:58109) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XC3C3-00083J-JV for submit@debbugs.gnu.org; Tue, 29 Jul 2014 04:55:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50233) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XC3Bx-0002DB-AZ for bug-gnu-emacs@gnu.org; Tue, 29 Jul 2014 04:55:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XC3Br-00080q-4p for bug-gnu-emacs@gnu.org; Tue, 29 Jul 2014 04:55:29 -0400 Received: from mx1.redhat.com ([209.132.183.28]:65335) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XC3Bq-00080N-TE for bug-gnu-emacs@gnu.org; Tue, 29 Jul 2014 04:55:23 -0400 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s6T8tMY8003134 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 29 Jul 2014 04:55:22 -0400 Received: from unused-4-157.brq.redhat.com (unused-4-228.brq.redhat.com [10.34.4.228]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s6T8tKCJ031045 for ; Tue, 29 Jul 2014 04:55:21 -0400 Message-ID: <53D76178.6000908@redhat.com> Date: Tue, 29 Jul 2014 10:55:20 +0200 From: Jan Chaloupka User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 References: <20140729053056.14713.45327.stgit@unused-4-157.brq.redhat.com> <53D73287.6020406@redhat.com> <53D75A18.8000508@redhat.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) On 07/29/2014 10:37 AM, Andreas Schwab wrote: > Jan Chaloupka writes: > >> Yes, for garbage collector. However, Vlast_kbd_macro will continue being >> Qnil. > Why is that a problem? That is the default value. So is it correct if append and Vlast_kbd_macro are both Qnil resulting in CHECK_VECTOR_OR_STRING fail? The bug from BZ is use-case where emacs crashes at startup, loading .emacs.desktop file. >> In function Fstart_kbd_macro (macros.c), Vlast_kbd_macro of current_kboard >> is >> Qnil for the first invocation. If NILP (append) is false >> CHECK_VECTOR_OR_STRING fails (invocation >> of wrong_type_argument resulting in emacs_abort). > Where does it call emacs_abort? Because Vlast_kbd_macro is not VECTOR nor STRING > >> However, it has to pass. > Why? My first question in this response. > > Andreas. > From unknown Tue Aug 19 02:56:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#18140: [PATCH] macros.c: CHECK_VECTOR_OR_STRING invokes wrong_type_argument for Qnil instead of return 0 Resent-From: Andreas Schwab Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 29 Jul 2014 09:05:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 18140 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Jan Chaloupka Cc: 18140@debbugs.gnu.org Received: via spool by 18140-submit@debbugs.gnu.org id=B18140.14066246962120 (code B ref 18140); Tue, 29 Jul 2014 09:05:02 +0000 Received: (at 18140) by debbugs.gnu.org; 29 Jul 2014 09:04:56 +0000 Received: from localhost ([127.0.0.1]:41611 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC3L6-0000Y7-4j for submit@debbugs.gnu.org; Tue, 29 Jul 2014 05:04:56 -0400 Received: from cantor2.suse.de ([195.135.220.15]:48525 helo=mx2.suse.de) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC3L2-0000Xx-UE for 18140@debbugs.gnu.org; Tue, 29 Jul 2014 05:04:54 -0400 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id C65F3ACFA; Tue, 29 Jul 2014 09:04:51 +0000 (UTC) From: Andreas Schwab References: <20140729053056.14713.45327.stgit@unused-4-157.brq.redhat.com> <53D73287.6020406@redhat.com> <53D75A18.8000508@redhat.com> <53D76178.6000908@redhat.com> X-Yow: Why was I BORN? Date: Tue, 29 Jul 2014 11:04:51 +0200 In-Reply-To: <53D76178.6000908@redhat.com> (Jan Chaloupka's message of "Tue, 29 Jul 2014 10:55:20 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -5.7 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.7 (-----) Jan Chaloupka writes: > So is it correct if append and Vlast_kbd_macro are both Qnil resulting in > CHECK_VECTOR_OR_STRING fail? Sure, that's the point of the check. last-kbd-macro is a lisp-level variable, so it must be checked. > Because Vlast_kbd_macro is not VECTOR nor STRING That just calls error, but not emacs_abort. Andreas. -- Andreas Schwab, SUSE Labs, schwab@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different." From unknown Tue Aug 19 02:56:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#18140: [PATCH] macros.c: CHECK_VECTOR_OR_STRING invokes wrong_type_argument for Qnil instead of return 0 Resent-From: Jan Chaloupka Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 29 Jul 2014 10:01:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 18140 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 18140@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.14066280237475 (code B ref -1); Tue, 29 Jul 2014 10:01:01 +0000 Received: (at submit) by debbugs.gnu.org; 29 Jul 2014 10:00:23 +0000 Received: from localhost ([127.0.0.1]:41629 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC4Cg-0001wL-Gb for submit@debbugs.gnu.org; Tue, 29 Jul 2014 06:00:23 -0400 Received: from eggs.gnu.org ([208.118.235.92]:59939) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC4CZ-0001vF-AH for submit@debbugs.gnu.org; Tue, 29 Jul 2014 06:00:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XC4CL-0001l3-13 for submit@debbugs.gnu.org; Tue, 29 Jul 2014 06:00:06 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:37510) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XC4CK-0001kz-UR for submit@debbugs.gnu.org; Tue, 29 Jul 2014 05:59:56 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33379) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XC4CD-0003Zs-Et for bug-gnu-emacs@gnu.org; Tue, 29 Jul 2014 05:59:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XC4C5-0001k8-Vc for bug-gnu-emacs@gnu.org; Tue, 29 Jul 2014 05:59:49 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50365) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XC4C5-0001k1-OW for bug-gnu-emacs@gnu.org; Tue, 29 Jul 2014 05:59:41 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s6T9xdrE001484 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 29 Jul 2014 05:59:40 -0400 Received: from unused-4-157.brq.redhat.com (unused-4-228.brq.redhat.com [10.34.4.228]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s6T9xcGI014281 for ; Tue, 29 Jul 2014 05:59:39 -0400 Message-ID: <53D7708A.9010007@redhat.com> Date: Tue, 29 Jul 2014 11:59:38 +0200 From: Jan Chaloupka User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 References: <20140729053056.14713.45327.stgit@unused-4-157.brq.redhat.com> <53D73287.6020406@redhat.com> <53D75A18.8000508@redhat.com> <53D76178.6000908@redhat.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) On 07/29/2014 11:04 AM, Andreas Schwab wrote: > Jan Chaloupka writes: > >> So is it correct if append and Vlast_kbd_macro are both Qnil resulting in >> CHECK_VECTOR_OR_STRING fail? > Sure, that's the point of the check. last-kbd-macro is a lisp-level > variable, so it must be checked. Yes, I agree it has to be check. Having .emacs.desktop file with series of the folkowing kbd macro definitions: (desktop-create-buffer 206 ... '(defining-kbd-macro global-auto-revert-mode) ... ) append argument of start-kbd-macro is false. But because there is no last kbd macro, check fails. I guess then .emacs.desktop is incorectly written. Thus resulting in proper check fail. >> Because Vlast_kbd_macro is not VECTOR nor STRING > That just calls error, but not emacs_abort. CHECK_VECTOR_OR_STRING -> wrong_type_argument -> xsignal2 -> xsignal void xsignal (Lisp_Object error_symbol, Lisp_Object data) { Fsignal (error_symbol, data); emacs_abort (); } emacs_abort then has to be called after Fsignal finished. Or is there a back jmp back to main loop or somewhere else? > Andreas. > From unknown Tue Aug 19 02:56:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#18140: [PATCH] macros.c: CHECK_VECTOR_OR_STRING invokes wrong_type_argument for Qnil instead of return 0 Resent-From: Andreas Schwab Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 29 Jul 2014 10:07:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 18140 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Jan Chaloupka Cc: 18140@debbugs.gnu.org Received: via spool by 18140-submit@debbugs.gnu.org id=B18140.14066283718009 (code B ref 18140); Tue, 29 Jul 2014 10:07:02 +0000 Received: (at 18140) by debbugs.gnu.org; 29 Jul 2014 10:06:11 +0000 Received: from localhost ([127.0.0.1]:41633 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC4II-000252-R5 for submit@debbugs.gnu.org; Tue, 29 Jul 2014 06:06:11 -0400 Received: from cantor2.suse.de ([195.135.220.15]:50322 helo=mx2.suse.de) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XC4IC-00024Z-8e for 18140@debbugs.gnu.org; Tue, 29 Jul 2014 06:06:04 -0400 Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 9F22FAD01; Tue, 29 Jul 2014 10:05:58 +0000 (UTC) From: Andreas Schwab References: <20140729053056.14713.45327.stgit@unused-4-157.brq.redhat.com> <53D73287.6020406@redhat.com> <53D75A18.8000508@redhat.com> <53D76178.6000908@redhat.com> <53D7708A.9010007@redhat.com> X-Yow: I want to kill everyone here with a cute colorful Hydrogen Bomb!! Date: Tue, 29 Jul 2014 12:05:58 +0200 In-Reply-To: <53D7708A.9010007@redhat.com> (Jan Chaloupka's message of "Tue, 29 Jul 2014 11:59:38 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -5.7 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.7 (-----) Jan Chaloupka writes: > emacs_abort then has to be called after Fsignal finished. Fsignal never returns. Andreas. -- Andreas Schwab, SUSE Labs, schwab@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different."