From unknown Mon Jun 23 23:55:39 2025 X-Loop: help-debbugs@gnu.org Subject: bug#33547: 27.0.50; Emacs stuck in infinite loop in garbage collection Resent-From: Philipp Stephani Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 29 Nov 2018 16:54:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 33547 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 33547@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.154351040822232 (code B ref -1); Thu, 29 Nov 2018 16:54:02 +0000 Received: (at submit) by debbugs.gnu.org; 29 Nov 2018 16:53:28 +0000 Received: from localhost ([127.0.0.1]:55039 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gSPZ9-0005mV-BF for submit@debbugs.gnu.org; Thu, 29 Nov 2018 11:53:28 -0500 Received: from eggs.gnu.org ([208.118.235.92]:60506) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gSPZ5-0005mG-Ka for submit@debbugs.gnu.org; Thu, 29 Nov 2018 11:53:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gSPYx-0006Nq-67 for submit@debbugs.gnu.org; Thu, 29 Nov 2018 11:53:18 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_50, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:36525) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gSPYx-0006Nm-23 for submit@debbugs.gnu.org; Thu, 29 Nov 2018 11:53:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41880) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gSPYt-0004cJ-Dm for bug-gnu-emacs@gnu.org; Thu, 29 Nov 2018 11:53:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gSPYr-0006Ll-8o for bug-gnu-emacs@gnu.org; Thu, 29 Nov 2018 11:53:11 -0500 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]:53263) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gSPYq-0006LN-U1 for bug-gnu-emacs@gnu.org; Thu, 29 Nov 2018 11:53:09 -0500 Received: by mail-wm1-x32b.google.com with SMTP id y1so2990488wmi.3 for ; Thu, 29 Nov 2018 08:53:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=07zlNd/s38T3Xbg0sNBVuTxAnP5D5uF3YzXgtKGRcZU=; b=TmRvM5ayhQ+kf6ooZxfRjmZpqiO/vGiNRVJKtdBQhdQmswS4NjXsoFlm9REzCUhDbP vdd3dvOoYnMvNmTF5HH6UKaDdPrh/gm7TW5xJka+D5eQGY30McqsyW5TqYIYd49qsw4Z /Kd7ZHnYmRf9ITWmBm2pNZdLI3VDK64VNfPmZ4Mg+wFiQkTqPM9ERILnIGzIkWgQ5fFk WH1l+z3MG5haNNlgMDD7MpG97S2o6UPC09g5HZtccwKCAHcggl6JW/o+sQDdEx5Tvrl+ T+ns+QzxeuqK+L4nMecMFnzTxRctRmyM7VvOHXQLXUcnCBDRdE1t0GzjocVnfSEKvZjq +yng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=07zlNd/s38T3Xbg0sNBVuTxAnP5D5uF3YzXgtKGRcZU=; b=YFi89GQNWI9C3fh/Bm0DaYmelc/brGGOAah/pYJ2llqrPmRo+v2dCZC2b5SB6hllLF pTvSMRT8GBCe7uSnR4/eNcUFhQD43jourQ9Sztejww4ICzX6tnwJa7kfL/aiWxkyG0eH HHifUQTGD4hs3PEivp2roOfCeiZ/gahYfaqSv8Gsucr6ukOr4km4L/6V+9WvM8HNMtvZ zXVs6ZlsxuhNAV5lzvTzvjI4Jdu1K4/aDQ1KVwI6EVQDSKPGt8obnk/BDQnTQXrihzKn jd3Ge2YjiAAfTJ18oUng1rMc41TuiNZXOsJL0yKqC1ch0j2ZZ1F7UzVUqbGD12u3BA92 WQvw== X-Gm-Message-State: AA+aEWbt6OAUkDJrPQc9fzBoLWBtb9Hm5+sxl4h2lmVF603v6HbtIH6b +Kz/5+QOC0DrOoS5V2qzeY7mvDgU X-Google-Smtp-Source: AFSGD/X3mBmuYS9j6ipufsZ5xs+uZlwFaim0yGdXRrLgblG7V9eE6xPHrV+mV5P7dHAe5fnAmRO6Iw== X-Received: by 2002:a1c:d988:: with SMTP id q130mr2548924wmg.41.1543510386660; Thu, 29 Nov 2018 08:53:06 -0800 (PST) Received: from a.muc.corp.google.com ([2a00:79e0:15:10:cd99:29f5:6da:65fc]) by smtp.gmail.com with ESMTPSA id p4sm1473221wrs.74.2018.11.29.08.53.05 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 29 Nov 2018 08:53:05 -0800 (PST) From: Philipp Stephani Date: Thu, 29 Nov 2018 17:53:02 +0100 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -3.8 (---) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 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: -4.8 (----) I didn't manage to reproduce this issue yet, but it seems that Emacs 26.2 can get stuck in an infinite loop in garbage collection: (gdb) bt #0 0x000000000050992c in mark_kboards () at keyboard.c:12020 #1 0x0000000000555f55 in garbage_collect_1 (end=3D) at allo= c.c:5987 #2 0x0000000000555f55 in Fgarbage_collect () at alloc.c:6159 #3 0x000000000056e5e4 in maybe_gc () at lisp.h:4751 #4 0x000000000056e5e4 in Ffuncall (nargs=3D2, args=3Dargs@entry=3D0x7ffd3b= 9fbbb0) at eval.c:2809 #5 0x00000000005a95b0 in exec_byte_code (bytestr=3D, vector= =3D, maxdepth=3D, args_template=3D, nargs=3Dnargs@entry=3D140725603777472, args=3D,=20 args@entry=3D0x17ffd3b9fbdd0) at bytecode.c:630 #6 0x0000000000571041 in funcall_lambda (fun=3DXIL(0x7ffd3b9fbbb0), nargs= =3D140725603777472, nargs@entry=3D0, arg_vector=3D0x17ffd3b9fbdd0, arg_vect= or@entry=3D0x7ffd3b9fbdd0) at eval.c:3028 #7 0x000000000056e6eb in Ffuncall (nargs=3Dnargs@entry=3D1, args=3Dargs@en= try=3D0x7ffd3b9fbdc8) at eval.c:2841 #8 0x000000000056e808 in call0 (fn=3D, fn@entry=3DXIL(0x7b3= 0)) at eval.c:2670 #9 0x000000000050488b in read_char (commandflag=3Dcommandflag@entry=3D1, m= ap=3Dmap@entry=3DXIL(0xaa1e353), prev_event=3DXIL(0), used_mouse_menu=3Duse= d_mouse_menu@entry=3D0x7ffd3b9fc44b, end_time=3Dend_time@entry=3D0x0) at keyboard.c:2619 #10 0x000000000050554c in read_key_sequence (keybuf=3Dkeybuf@entry=3D0x7ffd3b9fc540, prompt=3Dprompt@entry=3DXIL(0)= , dont_downcase_last=3Ddont_downcase_last@entry=3Dfalse, can_return_switch_= frame=3Dcan_return_switch_frame@entry=3Dtrue, fix_current_buffer=3Dfix_curr= ent_buffer@entry=3Dtrue, prevent_redisplay=3Dprevent_redisplay@entry=3Dfals= e, bufsize=3D30) at keyboard.c:9148 #11 0x0000000000506f84 in command_loop_1 () at keyboard.c:1368 #12 0x000000000056d91e in internal_condition_case (bfun=3Dbfun@entry=3D0x50= 6d60 , handlers=3Dhandlers@entry=3DXIL(0x53d0), hfun=3Dhfun= @entry=3D0x4fdaa0 ) at eval.c:1336 #13 0x00000000004f86b4 in command_loop_2 (ignore=3Dignore@entry=3DXIL(0)) a= t keyboard.c:1110 #14 0x000000000056d88d in internal_catch (tag=3Dtag@entry=3DXIL(0xccc0), fu= nc=3Dfunc@entry=3D0x4f8690 , arg=3Darg@entry=3DXIL(0)) at e= val.c:1101 #15 0x00000000004f864b in command_loop () at keyboard.c:1089 #16 0x00000000004fd6b3 in recursive_edit_1 () at keyboard.c:695 #17 0x00000000004fd9ce in Frecursive_edit () at keyboard.c:766 #18 0x000000000041afc3 in main (argc=3D, argv=3D0x7ffd3b9fc8= e8) at emacs.c:1751 Lisp Backtrace: "Automatic GC" (0x0) "vector" (0x3b9fbbb8) "internal-echo-keystrokes-prefix" (0x3b9fbdd0) In this situation, Emacs never leaves mark_kboards. The variables here are: (gdb) p &kbd_buffer $7 =3D (union buffered_input_event (*)[4096]) 0x9a23e0 (gdb) p ((union buffered_input_event*)kbd_buffer + 4096) $9 =3D (union buffered_input_event *) 0x9da3e0 (gdb) p kbd_fetch_ptr $4 =3D (union buffered_input_event *) 0x9d9340 (gdb) p kbd_store_ptr $5 =3D (union buffered_input_event * volatile) 0x9a23e0 (gdb) p event $6 =3D (union buffered_input_event *) 0x9ad078 The loop starts with for (event =3D kbd_fetch_ptr; event !=3D kbd_store_ptr; event++) { if (event =3D=3D kbd_buffer + KBD_BUFFER_SIZE) event =3D kbd_buffer; This seems suspicious given that kbd_fetch_ptr > kbd_store_ptr. It seems like this loop can never terminate, but I don't know how we got into that situation. (gdb) bt full #0 0x000000000050992c in mark_kboards () at keyboard.c:12020 event =3D 0x9ad078 kb =3D p =3D #1 0x0000000000555f55 in garbage_collect_1 (end=3D) at allo= c.c:5987 nextb =3D i =3D stack_top_variable =3D 0 '\000' message_p =3D false tot_before =3D 0 total =3D {XIL(0), XIL(0x4), XIL(0x7ffd3b9fbd50), XIL(0x5aae61), XI= L(0x73de6d), XIL(0xfffffffffe0a3ba0), XIL(0), XIL(0xb7ed375), XIL(0xc660), = XIL(0)} #2 0x0000000000555f55 in Fgarbage_collect () at alloc.c:6159 #3 0x000000000056e5e4 in maybe_gc () at lisp.h:4751 fun =3D original_fun =3D numargs =3D 1 val =3D count =3D 4 #4 0x000000000056e5e4 in Ffuncall (nargs=3D2, args=3Dargs@entry=3D0x7ffd3b= 9fbbb0) at eval.c:2809 fun =3D original_fun =3D numargs =3D 1 val =3D count =3D 4 #5 0x00000000005a95b0 in exec_byte_code (bytestr=3D, vector= =3D, maxdepth=3D, args_template=3D, nargs=3Dnargs@entry=3D140725603777472, args=3D,=20 args@entry=3D0x17ffd3b9fbdd0) at bytecode.c:630 op =3D type =3D targets =3D=20 {0x5ab9e9 , 0x5a98bd , = 0x5a98b8 , 0x5a98b3 , 0x5a96d8 , 0x5a96d8 , 0x5a987d , 0x5a983d , 0x5aa1e6 , 0= x5aa20c , 0x5aa207 , 0x5aa202 , 0x5a967f , 0x5a9680 , 0x5aa3c0 , 0x5aa1eb , 0x5a= a294 , 0x5aa28f , 0x5aa28a , 0x5aa285 , 0x5a95ca , 0x5a95d0 , 0x5aa261 , 0x5aa26= e , 0x5aa703 , 0x5aa6fe , 0x5aa6f9 , 0x5aa6f4 , 0x5a9638 , 0x5a9640 , 0x5aa228 <= exec_byte_code+3912>, 0x5aa211 , 0x5aa6cb , 0x5aa6c6 , 0x5aa6c1 , = 0x5aa6bc , 0x5a9586 , 0x5a9590 , 0x5aa6e7 , 0x5aa6d0 , 0x5aa693 , 0x5aa68e , 0x5= aa689 , 0x5aa684 , 0x5a9521 , 0x5a9528 , 0x5aa6af , 0x5aa698 , 0x5ab44e , 0x5ab5= d8 , 0x5ab518 , 0x5ab9e9 , 0x5ab9e9 , 0x5ab9e9 , 0x5ab9e9 , 0x5ab9e9 , 0x5ab25= 9 , 0x5ab21a , 0x5ab1d5 , 0x5ab190 , 0x5ab152 , 0x5aa30a , 0x5aa2d1 , 0x5ab125= , 0x5aa34c , 0x5aa299 , 0x5ab0ec , 0x5ab0c3 = , 0x5ab08a , 0x5ab057 , 0x5ab024 = , 0x5aafb9 , 0x5aaf80 , 0x5aaf43 , 0x5aaf1a ,= 0x5aaef1 , 0x5aaeb8 , 0x5aae7f <= exec_byte_code+7071>, 0x5aae46 , 0x5aae09 , 0x5aadd6 , 0x5aada3 , = 0x5aad70 , 0x5aacec , 0x5aacaa , 0x5aac16 , 0x5aabd8 , 0x5aab9a , 0x5aab5c , 0= x5aab1e , 0x5aaaeb , 0x5aaaaa , 0x5aaa77 , 0x5aaa44 , 0x5aaa11 , 0x5aa9de , 0x= 5aa92f , 0x5a9750 , 0x5aa906 , 0x5aa8d8 , 0x5aa853 , 0x5aa810 , 0x5aa7e7 , 0x5= aa7bc , 0x5aa791 , 0x5aa75e , 0x5aa733 , 0x5ab9e9 , 0x5aa708 , 0x5a9f9f , 0x5a= 9f74 , 0x5a9f49 , 0x5a9f1e , 0x5a9ef5 , 0x5a9750 , 0x5ab9e9 , 0x5a9eb6 , 0x5a9= e8d , 0x5a9e64 , 0x5aa003 , 0x5a9fca , 0x5a9b20 , 0x5a9aff , 0x5a9ac6 , 0x5a9a= 8d , 0x5a9a54 , 0x5a9a29 , 0x5a9c9c , 0x5ab9e9 , 0x5aa3fb , 0x5aa632 , 0x5aa38= 4 , 0x5aa5f6 , 0x5aa5c1 , 0x5aa588 , 0x5aa03c , 0x5aa43a , 0x5aa235 , 0x5aa3cd= , 0x5ab4a9 , 0x5ab47b , 0x5ab598 , 0x5ab400 = , 0x5ab3c3 , 0x5ab37d , 0--Type <= RET> for more, q to quit, c to continue without paging--c x5ab30a , 0x5aa660 , 0x5a9c5f , 0x5a9c36 , 0x5a9c0d , 0x5a9be4 , 0x5a9bbb , 0x= 5a9b82 , 0x5a9b49 , 0x5a9d90 , 0x5a9d57 , 0x5a9cfe , 0x5a9cc5 , 0x5a9df2 , 0x5= a9dc9 , 0x5a9e2b , 0x5a99f0 , 0x5a99b8 , 0x5a9980 , 0x5a994d , 0x5aa9ab , 0x5a= a972 , 0x5a9907 , 0x5a98c2 , 0x5ab9e9 , 0x5aa52f , 0x5aa4f8 , 0x5aa4c1 , 0x5aa= 48d , 0x5aa459 , 0x5aafe2 , 0x5aad2e , 0x5aa896 , 0x5a97fc , 0x5a97af , 0x5ab9= e9 , 0x5ab9e9 , 0x5a977e , 0x5aa0cd , 0x5ab9e9 , 0x5ab9e9 , 0x5ab9e9 , 0x5ab9e= 9 , 0x5ab9e9 , 0x5ab9e9 , 0x5ab9e9 , 0x5ab9e9 , 0x5aa09b } const_length =3D bytestr_length =3D vectorp =3D 0x743010 quitcounter =3D 1 '\001' stack_items =3D sa_avail =3D sa_count =3D sa_must_free =3D stack_base =3D stack_lim =3D top =3D 0x7ffd3b9fbbb0 void_stack_lim =3D bytestr_data =3D pc =3D count =3D result =3D #6 0x0000000000571041 in funcall_lambda (fun=3DXIL(0x7ffd3b9fbbb0), nargs= =3D140725603777472, nargs@entry=3D0, arg_vector=3D0x17ffd3b9fbdd0, arg_vect= or@entry=3D0x7ffd3b9fbdd0) at eval.c:3028 val =3D syms_left =3D lexenv =3D i =3D optional =3D rest =3D previous_optional_or_rest =3D #7 0x000000000056e6eb in Ffuncall (nargs=3Dnargs@entry=3D1, args=3Dargs@en= try=3D0x7ffd3b9fbdc8) at eval.c:2841 fun =3D original_fun =3D XIL(0x7b30) numargs =3D 0 val =3D count =3D 3 #8 0x000000000056e808 in call0 (fn=3D, fn@entry=3DXIL(0x7b3= 0)) at eval.c:2670 #9 0x000000000050488b in read_char (commandflag=3Dcommandflag@entry=3D1, m= ap=3Dmap@entry=3DXIL(0xaa1e353), prev_event=3DXIL(0), used_mouse_menu=3Duse= d_mouse_menu@entry=3D0x7ffd3b9fc44b, end_time=3Dend_time@entry=3D0x0) at ke= yboard.c:2619 c =3D jmpcount =3D 3 local_getcjmp =3D {{ __jmpbuf =3D {44149952, 3937684359170571700, 3, 0, 10326792, 0,= 3936423309431456331, -3937681285116542389},=20 __mask_was_saved =3D 0,=20 __saved_mask =3D { __val =3D {93642533, 33264, 59304257, 0, 5655602, 0, 4, 0, 93= 642528, 6, 0, 1, 140725603778848, 59304257, 0, 0} } }} save_jump =3D {{ __jmpbuf =3D {44077824, 0, 65, 140725603770752, -33016736, 5695= 344, -33130304, 65},=20 __mask_was_saved =3D 1000317776,=20 __saved_mask =3D { __val =3D {65, 0, 140725603770782, 140725603770744, 5936560, = 78055685, 4, 48, 96, 1, 210453397508, 0, 0, 472446402651, 0, 0} } }} tem =3D save =3D previous_echo_area_message =3D XIL(0) also_record =3D XIL(0) reread =3D false recorded =3D false polling_stopped_here =3D false orig_kboard =3D 0x3487850 #10 0x000000000050554c in read_key_sequence (keybuf=3Dkeybuf@entry=3D0x7ffd= 3b9fc540, prompt=3Dprompt@entry=3DXIL(0), dont_downcase_last=3Ddont_downcas= e_last@entry=3Dfalse, can_return_switch_frame=3Dcan_return_switch_frame@ent= ry=3Dtrue, fix_current_buffer=3Dfix_current_buffer@entry=3Dtrue, prevent_re= display=3Dprevent_redisplay@entry=3Dfalse, bufsize=3D30) at keyboard.c:9148 interrupted_kboard =3D 0x3487850 interrupted_frame =3D 0x11d6c30 key =3D used_mouse_menu =3D false echo_local_start =3D 0 last_real_key_start =3D 0 keys_local_start =3D 0 new_binding =3D t =3D 0 echo_start =3D 0 keys_start =3D 0 current_binding =3D XIL(0xaa1e353) first_event =3D XIL(0) first_unbound =3D 31 mock_input =3D 0 fkey =3D { parent =3D XIL(0x10d76d3),=20 map =3D XIL(0x10d76d3),=20 start =3D 0,=20 end =3D 0 } keytran =3D { parent =3D XIL(0xa63a93),=20 map =3D XIL(0xa63a93),=20 start =3D 0,=20 end =3D 0 } indec =3D { parent =3D XIL(0x10d7703),=20 map =3D XIL(0x10d7703),=20 start =3D 0,=20 end =3D 0 } shift_translated =3D false delayed_switch_frame =3D XIL(0) original_uppercase =3D XIL(0) original_uppercase_position =3D -1 dummyflag =3D false fake_prefixed_keys =3D XIL(0) #11 0x0000000000506f84 in command_loop_1 () at keyboard.c:1368 cmd =3D keybuf =3D {make_number(80), make_number(52), make_number(98), XIL(= 0x2a09300), XIL(0x3), XIL(0x56e770), XIL(0x1), XIL(0xaa767c3), XIL(0x7ffd3b= 9fc610), XIL(0), XIL(0xaa767c3), XIL(0), XIL(0xffffffffffffffff), XIL(0x571= cf4), XIL(0xfffffffffe063960), XIL(0xaa767c3), XIL(0x678884), XIL(0), XIL(0= ), XIL(0x4a6d53413cc7100), XIL(0x7ffd3b9fc610), XIL(0x4fda7f), XIL(0x7ffd3b= 9fc610), XIL(0), XIL(0), XIL(0x4fdbbf), XIL(0), XIL(0x56e229), XIL(0x5), XI= L(0x7b60)} i =3D prev_modiff =3D 22 prev_buffer =3D 0x386d23a0 #12 0x000000000056d91e in internal_condition_case (bfun=3Dbfun@entry=3D0x50= 6d60 , handlers=3Dhandlers@entry=3DXIL(0x53d0), hfun=3Dhfun= @entry=3D0x4fdaa0 ) at eval.c:1336 val =3D c =3D 0x33412c0 #13 0x00000000004f86b4 in command_loop_2 (ignore=3Dignore@entry=3DXIL(0)) a= t keyboard.c:1110 val =3D XIL(0x99) #14 0x000000000056d88d in internal_catch (tag=3Dtag@entry=3DXIL(0xccc0), fu= nc=3Dfunc@entry=3D0x4f8690 , arg=3Darg@entry=3DXIL(0)) at e= val.c:1101 val =3D c =3D 0x33411a0 #15 0x00000000004f864b in command_loop () at keyboard.c:1089 #16 0x00000000004fd6b3 in recursive_edit_1 () at keyboard.c:695 val =3D #17 0x00000000004fd9ce in Frecursive_edit () at keyboard.c:766 buffer =3D #18 0x000000000041afc3 in main (argc=3D, argv=3D0x7ffd3b9fc8= e8) at emacs.c:1751 stack_bottom_variable =3D 0x7f294f292b4b <__libc_calloc+635> dumping =3D skip_args =3D 0 no_loadup =3D false junk =3D 0x0 dname_arg =3D 0x0 ch_to_dir =3D 0x0 original_pwd =3D disable_aslr =3D rlim =3D { rlim_cur =3D 10022912,=20 rlim_max =3D 18446744073709551615 } sockfd =3D -1 module_assertions =3D Lisp Backtrace: "Automatic GC" (0x0) "vector" (0x3b9fbbb8) "internal-echo-keystrokes-prefix" (0x3b9fbdd0) (gdb) xbacktrace "Automatic GC" (0x0) "vector" (0x3b9fbbb8) "internal-echo-keystrokes-prefix" (0x3b9fbdd0) In GNU Emacs 27.0.50 (build 46, x86_64-pc-linux-gnu, GTK+ Version 3.22.24) of 2018-11-27 Repository revision: e02d375cb6670e2306b9c67d7f6fd2dd1d1b2711 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.11906000 System Description: Debian GNU/Linux buster/sid Recent messages: For information about GNU Emacs and the GNU system, type C-h C-a. Source file =E2=80=98/usr/local/google/home/phst/ThirdParty/emacs-master/li= sp/emacs-lisp/bytecomp.el=E2=80=99 newer than byte-compiled file Eager macro-expansion failure: (wrong-number-of-arguments (2 . 2) 4) Configured using: 'configure --without-threads --enable-gcc-warnings=3Dwarn-only --enable-gtk-deprecation-warnings --without-pop --with-mailutils --enable-checking --enable-check-lisp-object-type --with-modules 'CFLAGS=3D-O0 -ggdb3'' Configured features: XPM JPEG TIFF GIF PNG SOUND DBUS GSETTINGS GLIB NOTIFY INOTIFY GNUTLS FREETYPE XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES JSON GMP Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message rmc dired dired-loaddefs format-spec rfc822 mml easymenu mml-sec epa derived epg epg-config gnus-util rmail rmail-loaddefs time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils phst pcase ffap thingatpt url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json map url-vars subr-x rx gnutls puny seq byte-opt gv bytecomp byte-compile cconv dbus xml cl-loaddefs cl-lib elec-pair mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote dbusbind inotify dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 108712 8519) (symbols 48 21762 1) (strings 32 32823 2052) (string-bytes 1 893166) (vectors 16 16431) (vector-slots 8 532238 6552) (floats 8 52 65) (intervals 56 221 0) (buffers 992 12)) --=20 Google Germany GmbH Erika-Mann-Stra=C3=9Fe 33 80636 M=C3=BCnchen Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Gesch=C3=A4ftsf=C3=BChrer: Paul Manicle, Halimah DeLaine Prado If you received this communication by mistake, please don=E2=80=99t forward= it to anyone else (it may contain confidential or privileged information), please erase all copies of it, including all attachments, and please let the sender know it went to the wrong person. Thanks. From unknown Mon Jun 23 23:55:39 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Philipp Stephani Subject: bug#33547: closed (27.0.50; Emacs stuck in infinite loop in garbage collection) Message-ID: References: X-Gnu-PR-Message: they-closed 33547 X-Gnu-PR-Package: emacs Reply-To: 33547@debbugs.gnu.org Date: Sat, 01 Dec 2018 00:34:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1543624442-20002-1" This is a multi-part message in MIME format... ------------=_1543624442-20002-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #33547: 27.0.50; Emacs stuck in infinite loop in garbage collection 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 33547@debbugs.gnu.org. --=20 33547: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D33547 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1543624442-20002-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 33547-done) by debbugs.gnu.org; 1 Dec 2018 00:33:28 +0000 Received: from localhost ([127.0.0.1]:56705 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gStDp-0005Bj-LB for submit@debbugs.gnu.org; Fri, 30 Nov 2018 19:33:28 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:42898) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gStDn-0005BT-Oa for 33547-done@debbugs.gnu.org; Fri, 30 Nov 2018 19:33:24 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 3ADFD16050D; Fri, 30 Nov 2018 16:33:18 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id Unb_me36NhYM; Fri, 30 Nov 2018 16:33:16 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id AA62916051A; Fri, 30 Nov 2018 16:33:16 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id fxSuEVJeNkfy; Fri, 30 Nov 2018 16:33:16 -0800 (PST) Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 8840216022D; Fri, 30 Nov 2018 16:33:16 -0800 (PST) To: Philipp Stephani From: Paul Eggert Subject: 27.0.50; Emacs stuck in infinite loop in garbage collection Openpgp: preference=signencrypt Autocrypt: addr=eggert@cs.ucla.edu; prefer-encrypt=mutual; keydata= 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 uNcby4U= Organization: UCLA Computer Science Department Message-ID: Date: Fri, 30 Nov 2018 16:33:16 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------BDFC05A0562DC36BEEA5FF7A" Content-Language: en-US X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 33547-done Cc: 33547-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 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: -3.3 (---) This is a multi-part message in MIME format. --------------BDFC05A0562DC36BEEA5FF7A Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Thanks for reporting that. I installed the first attached patch into Emacs master and am marking this bug as done. I am not sure whether a simpler patch should be installed into the emacs-26 branch, but the second attached patch should do the trick for that if needed, not that it's easy to test this sort of thing. --------------BDFC05A0562DC36BEEA5FF7A Content-Type: text/x-patch; name="0001-Fix-infloop-in-GC-mark_kboards-master.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0001-Fix-infloop-in-GC-mark_kboards-master.patch" >From 7d9fa89fb3f6db0bdc3960bbbf6c0cf34c98d1ca Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 30 Nov 2018 14:22:54 -0800 Subject: [PATCH] Fix infloop in GC mark_kboards * src/keyboard.c (KBD_BUFFER_SIZE): Now a constant, not a macro. (kbd_fetch_ptr, kbd_store_ptr): These now always point somewhere into kbd_buffer, instead of sometimes pointing just past the end which led to serious bugs (Bug#33547). All uses changed. (kbd_store_ptr): No longer volatile. This variable has not been accessed by a signal handler for some time, it seems. (next_kbd_event, prev_kbd_event): New functions. (kbd_buffer_nr_stored, process_special_events): Simplify. --- src/keyboard.c | 181 ++++++++++++++++++++----------------------------- 1 file changed, 72 insertions(+), 109 deletions(-) diff --git a/src/keyboard.c b/src/keyboard.c index be727a6549..59acb2dd08 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -92,7 +92,7 @@ volatile int interrupt_input_blocked; The maybe_quit function checks this. */ volatile bool pending_signals; -#define KBD_BUFFER_SIZE 4096 +enum { KBD_BUFFER_SIZE = 4096 }; KBOARD *initial_kboard; KBOARD *current_kboard; @@ -286,15 +286,11 @@ static bool input_was_pending; static union buffered_input_event kbd_buffer[KBD_BUFFER_SIZE]; /* Pointer to next available character in kbd_buffer. - If kbd_fetch_ptr == kbd_store_ptr, the buffer is empty. - This may be kbd_buffer + KBD_BUFFER_SIZE, meaning that the - next available char is in kbd_buffer[0]. */ + If kbd_fetch_ptr == kbd_store_ptr, the buffer is empty. */ static union buffered_input_event *kbd_fetch_ptr; -/* Pointer to next place to store character in kbd_buffer. This - may be kbd_buffer + KBD_BUFFER_SIZE, meaning that the next - character should go in kbd_buffer[0]. */ -static union buffered_input_event *volatile kbd_store_ptr; +/* Pointer to next place to store character in kbd_buffer. */ +static union buffered_input_event *kbd_store_ptr; /* The above pair of variables forms a "queue empty" flag. When we enqueue a non-hook event, we increment kbd_store_ptr. When we @@ -302,8 +298,7 @@ static union buffered_input_event *volatile kbd_store_ptr; there is input available if the two pointers are not equal. Why not just have a flag set and cleared by the enqueuing and - dequeuing functions? Such a flag could be screwed up by interrupts - at inopportune times. */ + dequeuing functions? The code is a bit simpler this way. */ static void recursive_edit_unwind (Lisp_Object buffer); static Lisp_Object command_loop (void); @@ -375,6 +370,20 @@ static void deliver_user_signal (int); static char *find_user_signal_name (int); static void store_user_signal_events (void); +/* Advance or retreat a buffered input event pointer. */ + +static union buffered_input_event * +next_kbd_event (union buffered_input_event *ptr) +{ + return ptr == kbd_buffer + KBD_BUFFER_SIZE - 1 ? kbd_buffer : ptr + 1; +} + +static union buffered_input_event * +prev_kbd_event (union buffered_input_event *ptr) +{ + return ptr == kbd_buffer ? kbd_buffer + KBD_BUFFER_SIZE - 1 : ptr - 1; +} + /* Like EVENT_START, but assume EVENT is an event. This pacifies gcc -Wnull-dereference, which might otherwise complain about earlier checks that EVENT is indeed an event. */ @@ -3338,8 +3347,6 @@ readable_events (int flags) do { - if (event == kbd_buffer + KBD_BUFFER_SIZE) - event = kbd_buffer; if (!( #ifdef USE_TOOLKIT_SCROLL_BARS (flags & READABLE_EVENTS_FILTER_EVENTS) && @@ -3356,7 +3363,7 @@ readable_events (int flags) && !((flags & READABLE_EVENTS_FILTER_EVENTS) && event->kind == BUFFER_SWITCH_EVENT)) return 1; - event++; + event = next_kbd_event (event); } while (event != kbd_store_ptr); } @@ -3410,12 +3417,8 @@ event_to_kboard (struct input_event *event) static int kbd_buffer_nr_stored (void) { - return kbd_fetch_ptr == kbd_store_ptr - ? 0 - : (kbd_fetch_ptr < kbd_store_ptr - ? kbd_store_ptr - kbd_fetch_ptr - : ((kbd_buffer + KBD_BUFFER_SIZE) - kbd_fetch_ptr - + (kbd_store_ptr - kbd_buffer))); + int n = kbd_store_ptr - kbd_fetch_ptr; + return n + (n < 0 ? KBD_BUFFER_SIZE : 0); } #endif /* Store an event obtained at interrupt level into kbd_buffer, fifo */ @@ -3466,12 +3469,10 @@ kbd_buffer_store_buffered_event (union buffered_input_event *event, (kb, list2 (make_lispy_switch_frame (event->ie.frame_or_window), make_fixnum (c))); kb->kbd_queue_has_data = true; - union buffered_input_event *sp; - for (sp = kbd_fetch_ptr; sp != kbd_store_ptr; sp++) - { - if (sp == kbd_buffer + KBD_BUFFER_SIZE) - sp = kbd_buffer; + for (union buffered_input_event *sp = kbd_fetch_ptr; + sp != kbd_store_ptr; sp = next_kbd_event (sp)) + { if (event_to_kboard (&sp->ie) == kb) { sp->ie.kind = NO_EVENT; @@ -3516,22 +3517,18 @@ kbd_buffer_store_buffered_event (union buffered_input_event *event, Just ignore the second one. */ else if (event->kind == BUFFER_SWITCH_EVENT && kbd_fetch_ptr != kbd_store_ptr - && ((kbd_store_ptr == kbd_buffer - ? kbd_buffer + KBD_BUFFER_SIZE - 1 - : kbd_store_ptr - 1)->kind) == BUFFER_SWITCH_EVENT) + && prev_kbd_event (kbd_store_ptr)->kind == BUFFER_SWITCH_EVENT) return; - if (kbd_store_ptr - kbd_buffer == KBD_BUFFER_SIZE) - kbd_store_ptr = kbd_buffer; - /* Don't let the very last slot in the buffer become full, since that would make the two pointers equal, and that is indistinguishable from an empty buffer. Discard the event if it would fill the last slot. */ - if (kbd_fetch_ptr - 1 != kbd_store_ptr) + union buffered_input_event *next_slot = next_kbd_event (kbd_store_ptr); + if (kbd_fetch_ptr != next_slot) { *kbd_store_ptr = *event; - ++kbd_store_ptr; + kbd_store_ptr = next_slot; #ifdef subprocesses if (kbd_buffer_nr_stored () > KBD_BUFFER_SIZE / 2 && ! kbd_on_hold_p ()) @@ -3574,11 +3571,8 @@ kbd_buffer_store_buffered_event (union buffered_input_event *event, void kbd_buffer_unget_event (struct selection_input_event *event) { - if (kbd_fetch_ptr == kbd_buffer) - kbd_fetch_ptr = kbd_buffer + KBD_BUFFER_SIZE; - /* Don't let the very last slot in the buffer become full, */ - union buffered_input_event *kp = kbd_fetch_ptr - 1; + union buffered_input_event *kp = prev_kbd_event (kbd_fetch_ptr); if (kp != kbd_store_ptr) { kp->sie = *event; @@ -3666,12 +3660,9 @@ kbd_buffer_store_help_event (Lisp_Object frame, Lisp_Object help) void discard_mouse_events (void) { - union buffered_input_event *sp; - for (sp = kbd_fetch_ptr; sp != kbd_store_ptr; sp++) + for (union buffered_input_event *sp = kbd_fetch_ptr; + sp != kbd_store_ptr; sp = next_kbd_event (sp)) { - if (sp == kbd_buffer + KBD_BUFFER_SIZE) - sp = kbd_buffer; - if (sp->kind == MOUSE_CLICK_EVENT || sp->kind == WHEEL_EVENT || sp->kind == HORIZ_WHEEL_EVENT @@ -3696,18 +3687,13 @@ discard_mouse_events (void) bool kbd_buffer_events_waiting (void) { - union buffered_input_event *sp; - - for (sp = kbd_fetch_ptr; - sp != kbd_store_ptr && sp->kind == NO_EVENT; - ++sp) - { - if (sp == kbd_buffer + KBD_BUFFER_SIZE) - sp = kbd_buffer; - } - - kbd_fetch_ptr = sp; - return sp != kbd_store_ptr && sp->kind != NO_EVENT; + for (union buffered_input_event *sp = kbd_fetch_ptr; + ; sp = next_kbd_event (sp)) + if (sp == kbd_store_ptr || sp->kind != NO_EVENT) + { + kbd_fetch_ptr = sp; + return sp != kbd_store_ptr && sp->kind != NO_EVENT; + } } @@ -3836,11 +3822,7 @@ kbd_buffer_get_event (KBOARD **kbp, mouse movement enabled and available. */ if (kbd_fetch_ptr != kbd_store_ptr) { - union buffered_input_event *event; - - event = ((kbd_fetch_ptr < kbd_buffer + KBD_BUFFER_SIZE) - ? kbd_fetch_ptr - : kbd_buffer); + union buffered_input_event *event = kbd_fetch_ptr; *kbp = event_to_kboard (&event->ie); if (*kbp == 0) @@ -3861,7 +3843,7 @@ kbd_buffer_get_event (KBOARD **kbp, since otherwise swallow_events will see it and process it again. */ struct selection_input_event copy = event->sie; - kbd_fetch_ptr = event + 1; + kbd_fetch_ptr = next_kbd_event (event); input_pending = readable_events (0); x_handle_selection_event (©); #else @@ -3876,7 +3858,7 @@ kbd_buffer_get_event (KBOARD **kbp, || defined (HAVE_NS) || defined (USE_GTK) case MENU_BAR_ACTIVATE_EVENT: { - kbd_fetch_ptr = event + 1; + kbd_fetch_ptr = next_kbd_event (event); input_pending = readable_events (0); if (FRAME_LIVE_P (XFRAME (event->ie.frame_or_window))) x_activate_menubar (XFRAME (event->ie.frame_or_window)); @@ -3921,7 +3903,7 @@ kbd_buffer_get_event (KBOARD **kbp, case SELECT_WINDOW_EVENT: { obj = make_lispy_event (&event->ie); - kbd_fetch_ptr = event + 1; + kbd_fetch_ptr = next_kbd_event (event); } break; default: @@ -3975,7 +3957,7 @@ kbd_buffer_get_event (KBOARD **kbp, /* Wipe out this event, to catch bugs. */ clear_event (&event->ie); - kbd_fetch_ptr = event + 1; + kbd_fetch_ptr = next_kbd_event (event); } } } @@ -4042,17 +4024,9 @@ kbd_buffer_get_event (KBOARD **kbp, static void process_special_events (void) { - union buffered_input_event *event; - - for (event = kbd_fetch_ptr; event != kbd_store_ptr; ++event) + for (union buffered_input_event *event = kbd_fetch_ptr; + event != kbd_store_ptr; event = next_kbd_event (event)) { - if (event == kbd_buffer + KBD_BUFFER_SIZE) - { - event = kbd_buffer; - if (event == kbd_store_ptr) - break; - } - /* If we find a stored X selection request, handle it now. */ if (event->kind == SELECTION_REQUEST_EVENT || event->kind == SELECTION_CLEAR_EVENT) @@ -4066,28 +4040,21 @@ process_special_events (void) cyclically. */ struct selection_input_event copy = event->sie; - union buffered_input_event *beg - = (kbd_fetch_ptr == kbd_buffer + KBD_BUFFER_SIZE) - ? kbd_buffer : kbd_fetch_ptr; + int moved_events; - if (event > beg) - memmove (beg + 1, beg, (event - beg) * sizeof *beg); - else if (event < beg) + if (event < kbd_fetch_ptr) { - if (event > kbd_buffer) - memmove (kbd_buffer + 1, kbd_buffer, - (event - kbd_buffer) * sizeof *kbd_buffer); - *kbd_buffer = *(kbd_buffer + KBD_BUFFER_SIZE - 1); - if (beg < kbd_buffer + KBD_BUFFER_SIZE - 1) - memmove (beg + 1, beg, - (kbd_buffer + KBD_BUFFER_SIZE - 1 - beg) * sizeof *beg); + memmove (kbd_buffer + 1, kbd_buffer, + (event - kbd_buffer) * sizeof *kbd_buffer); + kbd_buffer[0] = kbd_buffer[KBD_BUFFER_SIZE - 1]; + moved_events = kbd_buffer + KBD_BUFFER_SIZE - 1 - kbd_fetch_ptr; } - - if (kbd_fetch_ptr == kbd_buffer + KBD_BUFFER_SIZE) - kbd_fetch_ptr = kbd_buffer + 1; else - kbd_fetch_ptr++; + moved_events = event - kbd_fetch_ptr; + memmove (kbd_fetch_ptr + 1, kbd_fetch_ptr, + moved_events * sizeof *kbd_fetch_ptr); + kbd_fetch_ptr = next_kbd_event (kbd_fetch_ptr); input_pending = readable_events (0); x_handle_selection_event (©); #else @@ -10261,11 +10228,10 @@ stuff_buffered_input (Lisp_Object stuffstring) rms: we should stuff everything back into the kboard it came from. */ - for (; kbd_fetch_ptr != kbd_store_ptr; kbd_fetch_ptr++) + for (; kbd_fetch_ptr != kbd_store_ptr; + kbd_fetch_ptr = next_kbd_event (kbd_fetch_ptr)) { - if (kbd_fetch_ptr == kbd_buffer + KBD_BUFFER_SIZE) - kbd_fetch_ptr = kbd_buffer; if (kbd_fetch_ptr->kind == ASCII_KEYSTROKE_EVENT) stuff_char (kbd_fetch_ptr->ie.code); @@ -12003,21 +11969,18 @@ mark_kboards (void) mark_object (KVAR (kb, echo_string)); mark_object (KVAR (kb, echo_prompt)); } - { - union buffered_input_event *event; - for (event = kbd_fetch_ptr; event != kbd_store_ptr; event++) - { - if (event == kbd_buffer + KBD_BUFFER_SIZE) - event = kbd_buffer; - /* These two special event types has no Lisp_Objects to mark. */ - if (event->kind != SELECTION_REQUEST_EVENT - && event->kind != SELECTION_CLEAR_EVENT) - { - mark_object (event->ie.x); - mark_object (event->ie.y); - mark_object (event->ie.frame_or_window); - mark_object (event->ie.arg); - } - } - } + + for (union buffered_input_event *event = kbd_fetch_ptr; + event != kbd_store_ptr; event = next_kbd_event (event)) + { + /* These two special event types have no Lisp_Objects to mark. */ + if (event->kind != SELECTION_REQUEST_EVENT + && event->kind != SELECTION_CLEAR_EVENT) + { + mark_object (event->ie.x); + mark_object (event->ie.y); + mark_object (event->ie.frame_or_window); + mark_object (event->ie.arg); + } + } } -- 2.19.2 --------------BDFC05A0562DC36BEEA5FF7A Content-Type: text/x-patch; name="0001-Fix-infloop-in-GC-mark_kboards-emacs-26.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0001-Fix-infloop-in-GC-mark_kboards-emacs-26.patch" >From 7df217da0c97702988aadb6b231067a8bcda1703 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 30 Nov 2018 14:14:18 -0800 Subject: [PATCH] Fix infloop in GC mark_kboards Do not merge to master, as I have a more systematic fix there. * src/keyboard.c (mark_kboards): Fix infloop (Bug#33547). --- src/keyboard.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/keyboard.c b/src/keyboard.c index 0d56ea3f7a..dccc6b7f12 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -12011,7 +12011,12 @@ mark_kboards (void) for (event = kbd_fetch_ptr; event != kbd_store_ptr; event++) { if (event == kbd_buffer + KBD_BUFFER_SIZE) - event = kbd_buffer; + { + event = kbd_buffer; + if (event == kbd_store_ptr) + break; + } + /* These two special event types has no Lisp_Objects to mark. */ if (event->kind != SELECTION_REQUEST_EVENT && event->kind != SELECTION_CLEAR_EVENT) -- 2.19.2 --------------BDFC05A0562DC36BEEA5FF7A-- ------------=_1543624442-20002-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 29 Nov 2018 16:53:28 +0000 Received: from localhost ([127.0.0.1]:55039 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gSPZ9-0005mV-BF for submit@debbugs.gnu.org; Thu, 29 Nov 2018 11:53:28 -0500 Received: from eggs.gnu.org ([208.118.235.92]:60506) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gSPZ5-0005mG-Ka for submit@debbugs.gnu.org; Thu, 29 Nov 2018 11:53:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gSPYx-0006Nq-67 for submit@debbugs.gnu.org; Thu, 29 Nov 2018 11:53:18 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_50, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:36525) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gSPYx-0006Nm-23 for submit@debbugs.gnu.org; Thu, 29 Nov 2018 11:53:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41880) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gSPYt-0004cJ-Dm for bug-gnu-emacs@gnu.org; Thu, 29 Nov 2018 11:53:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gSPYr-0006Ll-8o for bug-gnu-emacs@gnu.org; Thu, 29 Nov 2018 11:53:11 -0500 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]:53263) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gSPYq-0006LN-U1 for bug-gnu-emacs@gnu.org; Thu, 29 Nov 2018 11:53:09 -0500 Received: by mail-wm1-x32b.google.com with SMTP id y1so2990488wmi.3 for ; Thu, 29 Nov 2018 08:53:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=07zlNd/s38T3Xbg0sNBVuTxAnP5D5uF3YzXgtKGRcZU=; b=TmRvM5ayhQ+kf6ooZxfRjmZpqiO/vGiNRVJKtdBQhdQmswS4NjXsoFlm9REzCUhDbP vdd3dvOoYnMvNmTF5HH6UKaDdPrh/gm7TW5xJka+D5eQGY30McqsyW5TqYIYd49qsw4Z /Kd7ZHnYmRf9ITWmBm2pNZdLI3VDK64VNfPmZ4Mg+wFiQkTqPM9ERILnIGzIkWgQ5fFk WH1l+z3MG5haNNlgMDD7MpG97S2o6UPC09g5HZtccwKCAHcggl6JW/o+sQDdEx5Tvrl+ T+ns+QzxeuqK+L4nMecMFnzTxRctRmyM7VvOHXQLXUcnCBDRdE1t0GzjocVnfSEKvZjq +yng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=07zlNd/s38T3Xbg0sNBVuTxAnP5D5uF3YzXgtKGRcZU=; b=YFi89GQNWI9C3fh/Bm0DaYmelc/brGGOAah/pYJ2llqrPmRo+v2dCZC2b5SB6hllLF pTvSMRT8GBCe7uSnR4/eNcUFhQD43jourQ9Sztejww4ICzX6tnwJa7kfL/aiWxkyG0eH HHifUQTGD4hs3PEivp2roOfCeiZ/gahYfaqSv8Gsucr6ukOr4km4L/6V+9WvM8HNMtvZ zXVs6ZlsxuhNAV5lzvTzvjI4Jdu1K4/aDQ1KVwI6EVQDSKPGt8obnk/BDQnTQXrihzKn jd3Ge2YjiAAfTJ18oUng1rMc41TuiNZXOsJL0yKqC1ch0j2ZZ1F7UzVUqbGD12u3BA92 WQvw== X-Gm-Message-State: AA+aEWbt6OAUkDJrPQc9fzBoLWBtb9Hm5+sxl4h2lmVF603v6HbtIH6b +Kz/5+QOC0DrOoS5V2qzeY7mvDgU X-Google-Smtp-Source: AFSGD/X3mBmuYS9j6ipufsZ5xs+uZlwFaim0yGdXRrLgblG7V9eE6xPHrV+mV5P7dHAe5fnAmRO6Iw== X-Received: by 2002:a1c:d988:: with SMTP id q130mr2548924wmg.41.1543510386660; Thu, 29 Nov 2018 08:53:06 -0800 (PST) Received: from a.muc.corp.google.com ([2a00:79e0:15:10:cd99:29f5:6da:65fc]) by smtp.gmail.com with ESMTPSA id p4sm1473221wrs.74.2018.11.29.08.53.05 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 29 Nov 2018 08:53:05 -0800 (PST) From: Philipp Stephani To: bug-gnu-emacs@gnu.org Subject: 27.0.50; Emacs stuck in infinite loop in garbage collection Date: Thu, 29 Nov 2018 17:53:02 +0100 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -3.8 (---) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 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: -4.8 (----) I didn't manage to reproduce this issue yet, but it seems that Emacs 26.2 can get stuck in an infinite loop in garbage collection: (gdb) bt #0 0x000000000050992c in mark_kboards () at keyboard.c:12020 #1 0x0000000000555f55 in garbage_collect_1 (end=3D) at allo= c.c:5987 #2 0x0000000000555f55 in Fgarbage_collect () at alloc.c:6159 #3 0x000000000056e5e4 in maybe_gc () at lisp.h:4751 #4 0x000000000056e5e4 in Ffuncall (nargs=3D2, args=3Dargs@entry=3D0x7ffd3b= 9fbbb0) at eval.c:2809 #5 0x00000000005a95b0 in exec_byte_code (bytestr=3D, vector= =3D, maxdepth=3D, args_template=3D, nargs=3Dnargs@entry=3D140725603777472, args=3D,=20 args@entry=3D0x17ffd3b9fbdd0) at bytecode.c:630 #6 0x0000000000571041 in funcall_lambda (fun=3DXIL(0x7ffd3b9fbbb0), nargs= =3D140725603777472, nargs@entry=3D0, arg_vector=3D0x17ffd3b9fbdd0, arg_vect= or@entry=3D0x7ffd3b9fbdd0) at eval.c:3028 #7 0x000000000056e6eb in Ffuncall (nargs=3Dnargs@entry=3D1, args=3Dargs@en= try=3D0x7ffd3b9fbdc8) at eval.c:2841 #8 0x000000000056e808 in call0 (fn=3D, fn@entry=3DXIL(0x7b3= 0)) at eval.c:2670 #9 0x000000000050488b in read_char (commandflag=3Dcommandflag@entry=3D1, m= ap=3Dmap@entry=3DXIL(0xaa1e353), prev_event=3DXIL(0), used_mouse_menu=3Duse= d_mouse_menu@entry=3D0x7ffd3b9fc44b, end_time=3Dend_time@entry=3D0x0) at keyboard.c:2619 #10 0x000000000050554c in read_key_sequence (keybuf=3Dkeybuf@entry=3D0x7ffd3b9fc540, prompt=3Dprompt@entry=3DXIL(0)= , dont_downcase_last=3Ddont_downcase_last@entry=3Dfalse, can_return_switch_= frame=3Dcan_return_switch_frame@entry=3Dtrue, fix_current_buffer=3Dfix_curr= ent_buffer@entry=3Dtrue, prevent_redisplay=3Dprevent_redisplay@entry=3Dfals= e, bufsize=3D30) at keyboard.c:9148 #11 0x0000000000506f84 in command_loop_1 () at keyboard.c:1368 #12 0x000000000056d91e in internal_condition_case (bfun=3Dbfun@entry=3D0x50= 6d60 , handlers=3Dhandlers@entry=3DXIL(0x53d0), hfun=3Dhfun= @entry=3D0x4fdaa0 ) at eval.c:1336 #13 0x00000000004f86b4 in command_loop_2 (ignore=3Dignore@entry=3DXIL(0)) a= t keyboard.c:1110 #14 0x000000000056d88d in internal_catch (tag=3Dtag@entry=3DXIL(0xccc0), fu= nc=3Dfunc@entry=3D0x4f8690 , arg=3Darg@entry=3DXIL(0)) at e= val.c:1101 #15 0x00000000004f864b in command_loop () at keyboard.c:1089 #16 0x00000000004fd6b3 in recursive_edit_1 () at keyboard.c:695 #17 0x00000000004fd9ce in Frecursive_edit () at keyboard.c:766 #18 0x000000000041afc3 in main (argc=3D, argv=3D0x7ffd3b9fc8= e8) at emacs.c:1751 Lisp Backtrace: "Automatic GC" (0x0) "vector" (0x3b9fbbb8) "internal-echo-keystrokes-prefix" (0x3b9fbdd0) In this situation, Emacs never leaves mark_kboards. The variables here are: (gdb) p &kbd_buffer $7 =3D (union buffered_input_event (*)[4096]) 0x9a23e0 (gdb) p ((union buffered_input_event*)kbd_buffer + 4096) $9 =3D (union buffered_input_event *) 0x9da3e0 (gdb) p kbd_fetch_ptr $4 =3D (union buffered_input_event *) 0x9d9340 (gdb) p kbd_store_ptr $5 =3D (union buffered_input_event * volatile) 0x9a23e0 (gdb) p event $6 =3D (union buffered_input_event *) 0x9ad078 The loop starts with for (event =3D kbd_fetch_ptr; event !=3D kbd_store_ptr; event++) { if (event =3D=3D kbd_buffer + KBD_BUFFER_SIZE) event =3D kbd_buffer; This seems suspicious given that kbd_fetch_ptr > kbd_store_ptr. It seems like this loop can never terminate, but I don't know how we got into that situation. (gdb) bt full #0 0x000000000050992c in mark_kboards () at keyboard.c:12020 event =3D 0x9ad078 kb =3D p =3D #1 0x0000000000555f55 in garbage_collect_1 (end=3D) at allo= c.c:5987 nextb =3D i =3D stack_top_variable =3D 0 '\000' message_p =3D false tot_before =3D 0 total =3D {XIL(0), XIL(0x4), XIL(0x7ffd3b9fbd50), XIL(0x5aae61), XI= L(0x73de6d), XIL(0xfffffffffe0a3ba0), XIL(0), XIL(0xb7ed375), XIL(0xc660), = XIL(0)} #2 0x0000000000555f55 in Fgarbage_collect () at alloc.c:6159 #3 0x000000000056e5e4 in maybe_gc () at lisp.h:4751 fun =3D original_fun =3D numargs =3D 1 val =3D count =3D 4 #4 0x000000000056e5e4 in Ffuncall (nargs=3D2, args=3Dargs@entry=3D0x7ffd3b= 9fbbb0) at eval.c:2809 fun =3D original_fun =3D numargs =3D 1 val =3D count =3D 4 #5 0x00000000005a95b0 in exec_byte_code (bytestr=3D, vector= =3D, maxdepth=3D, args_template=3D, nargs=3Dnargs@entry=3D140725603777472, args=3D,=20 args@entry=3D0x17ffd3b9fbdd0) at bytecode.c:630 op =3D type =3D targets =3D=20 {0x5ab9e9 , 0x5a98bd , = 0x5a98b8 , 0x5a98b3 , 0x5a96d8 , 0x5a96d8 , 0x5a987d , 0x5a983d , 0x5aa1e6 , 0= x5aa20c , 0x5aa207 , 0x5aa202 , 0x5a967f , 0x5a9680 , 0x5aa3c0 , 0x5aa1eb , 0x5a= a294 , 0x5aa28f , 0x5aa28a , 0x5aa285 , 0x5a95ca , 0x5a95d0 , 0x5aa261 , 0x5aa26= e , 0x5aa703 , 0x5aa6fe , 0x5aa6f9 , 0x5aa6f4 , 0x5a9638 , 0x5a9640 , 0x5aa228 <= exec_byte_code+3912>, 0x5aa211 , 0x5aa6cb , 0x5aa6c6 , 0x5aa6c1 , = 0x5aa6bc , 0x5a9586 , 0x5a9590 , 0x5aa6e7 , 0x5aa6d0 , 0x5aa693 , 0x5aa68e , 0x5= aa689 , 0x5aa684 , 0x5a9521 , 0x5a9528 , 0x5aa6af , 0x5aa698 , 0x5ab44e , 0x5ab5= d8 , 0x5ab518 , 0x5ab9e9 , 0x5ab9e9 , 0x5ab9e9 , 0x5ab9e9 , 0x5ab9e9 , 0x5ab25= 9 , 0x5ab21a , 0x5ab1d5 , 0x5ab190 , 0x5ab152 , 0x5aa30a , 0x5aa2d1 , 0x5ab125= , 0x5aa34c , 0x5aa299 , 0x5ab0ec , 0x5ab0c3 = , 0x5ab08a , 0x5ab057 , 0x5ab024 = , 0x5aafb9 , 0x5aaf80 , 0x5aaf43 , 0x5aaf1a ,= 0x5aaef1 , 0x5aaeb8 , 0x5aae7f <= exec_byte_code+7071>, 0x5aae46 , 0x5aae09 , 0x5aadd6 , 0x5aada3 , = 0x5aad70 , 0x5aacec , 0x5aacaa , 0x5aac16 , 0x5aabd8 , 0x5aab9a , 0x5aab5c , 0= x5aab1e , 0x5aaaeb , 0x5aaaaa , 0x5aaa77 , 0x5aaa44 , 0x5aaa11 , 0x5aa9de , 0x= 5aa92f , 0x5a9750 , 0x5aa906 , 0x5aa8d8 , 0x5aa853 , 0x5aa810 , 0x5aa7e7 , 0x5= aa7bc , 0x5aa791 , 0x5aa75e , 0x5aa733 , 0x5ab9e9 , 0x5aa708 , 0x5a9f9f , 0x5a= 9f74 , 0x5a9f49 , 0x5a9f1e , 0x5a9ef5 , 0x5a9750 , 0x5ab9e9 , 0x5a9eb6 , 0x5a9= e8d , 0x5a9e64 , 0x5aa003 , 0x5a9fca , 0x5a9b20 , 0x5a9aff , 0x5a9ac6 , 0x5a9a= 8d , 0x5a9a54 , 0x5a9a29 , 0x5a9c9c , 0x5ab9e9 , 0x5aa3fb , 0x5aa632 , 0x5aa38= 4 , 0x5aa5f6 , 0x5aa5c1 , 0x5aa588 , 0x5aa03c , 0x5aa43a , 0x5aa235 , 0x5aa3cd= , 0x5ab4a9 , 0x5ab47b , 0x5ab598 , 0x5ab400 = , 0x5ab3c3 , 0x5ab37d , 0--Type <= RET> for more, q to quit, c to continue without paging--c x5ab30a , 0x5aa660 , 0x5a9c5f , 0x5a9c36 , 0x5a9c0d , 0x5a9be4 , 0x5a9bbb , 0x= 5a9b82 , 0x5a9b49 , 0x5a9d90 , 0x5a9d57 , 0x5a9cfe , 0x5a9cc5 , 0x5a9df2 , 0x5= a9dc9 , 0x5a9e2b , 0x5a99f0 , 0x5a99b8 , 0x5a9980 , 0x5a994d , 0x5aa9ab , 0x5a= a972 , 0x5a9907 , 0x5a98c2 , 0x5ab9e9 , 0x5aa52f , 0x5aa4f8 , 0x5aa4c1 , 0x5aa= 48d , 0x5aa459 , 0x5aafe2 , 0x5aad2e , 0x5aa896 , 0x5a97fc , 0x5a97af , 0x5ab9= e9 , 0x5ab9e9 , 0x5a977e , 0x5aa0cd , 0x5ab9e9 , 0x5ab9e9 , 0x5ab9e9 , 0x5ab9e= 9 , 0x5ab9e9 , 0x5ab9e9 , 0x5ab9e9 , 0x5ab9e9 , 0x5aa09b } const_length =3D bytestr_length =3D vectorp =3D 0x743010 quitcounter =3D 1 '\001' stack_items =3D sa_avail =3D sa_count =3D sa_must_free =3D stack_base =3D stack_lim =3D top =3D 0x7ffd3b9fbbb0 void_stack_lim =3D bytestr_data =3D pc =3D count =3D result =3D #6 0x0000000000571041 in funcall_lambda (fun=3DXIL(0x7ffd3b9fbbb0), nargs= =3D140725603777472, nargs@entry=3D0, arg_vector=3D0x17ffd3b9fbdd0, arg_vect= or@entry=3D0x7ffd3b9fbdd0) at eval.c:3028 val =3D syms_left =3D lexenv =3D i =3D optional =3D rest =3D previous_optional_or_rest =3D #7 0x000000000056e6eb in Ffuncall (nargs=3Dnargs@entry=3D1, args=3Dargs@en= try=3D0x7ffd3b9fbdc8) at eval.c:2841 fun =3D original_fun =3D XIL(0x7b30) numargs =3D 0 val =3D count =3D 3 #8 0x000000000056e808 in call0 (fn=3D, fn@entry=3DXIL(0x7b3= 0)) at eval.c:2670 #9 0x000000000050488b in read_char (commandflag=3Dcommandflag@entry=3D1, m= ap=3Dmap@entry=3DXIL(0xaa1e353), prev_event=3DXIL(0), used_mouse_menu=3Duse= d_mouse_menu@entry=3D0x7ffd3b9fc44b, end_time=3Dend_time@entry=3D0x0) at ke= yboard.c:2619 c =3D jmpcount =3D 3 local_getcjmp =3D {{ __jmpbuf =3D {44149952, 3937684359170571700, 3, 0, 10326792, 0,= 3936423309431456331, -3937681285116542389},=20 __mask_was_saved =3D 0,=20 __saved_mask =3D { __val =3D {93642533, 33264, 59304257, 0, 5655602, 0, 4, 0, 93= 642528, 6, 0, 1, 140725603778848, 59304257, 0, 0} } }} save_jump =3D {{ __jmpbuf =3D {44077824, 0, 65, 140725603770752, -33016736, 5695= 344, -33130304, 65},=20 __mask_was_saved =3D 1000317776,=20 __saved_mask =3D { __val =3D {65, 0, 140725603770782, 140725603770744, 5936560, = 78055685, 4, 48, 96, 1, 210453397508, 0, 0, 472446402651, 0, 0} } }} tem =3D save =3D previous_echo_area_message =3D XIL(0) also_record =3D XIL(0) reread =3D false recorded =3D false polling_stopped_here =3D false orig_kboard =3D 0x3487850 #10 0x000000000050554c in read_key_sequence (keybuf=3Dkeybuf@entry=3D0x7ffd= 3b9fc540, prompt=3Dprompt@entry=3DXIL(0), dont_downcase_last=3Ddont_downcas= e_last@entry=3Dfalse, can_return_switch_frame=3Dcan_return_switch_frame@ent= ry=3Dtrue, fix_current_buffer=3Dfix_current_buffer@entry=3Dtrue, prevent_re= display=3Dprevent_redisplay@entry=3Dfalse, bufsize=3D30) at keyboard.c:9148 interrupted_kboard =3D 0x3487850 interrupted_frame =3D 0x11d6c30 key =3D used_mouse_menu =3D false echo_local_start =3D 0 last_real_key_start =3D 0 keys_local_start =3D 0 new_binding =3D t =3D 0 echo_start =3D 0 keys_start =3D 0 current_binding =3D XIL(0xaa1e353) first_event =3D XIL(0) first_unbound =3D 31 mock_input =3D 0 fkey =3D { parent =3D XIL(0x10d76d3),=20 map =3D XIL(0x10d76d3),=20 start =3D 0,=20 end =3D 0 } keytran =3D { parent =3D XIL(0xa63a93),=20 map =3D XIL(0xa63a93),=20 start =3D 0,=20 end =3D 0 } indec =3D { parent =3D XIL(0x10d7703),=20 map =3D XIL(0x10d7703),=20 start =3D 0,=20 end =3D 0 } shift_translated =3D false delayed_switch_frame =3D XIL(0) original_uppercase =3D XIL(0) original_uppercase_position =3D -1 dummyflag =3D false fake_prefixed_keys =3D XIL(0) #11 0x0000000000506f84 in command_loop_1 () at keyboard.c:1368 cmd =3D keybuf =3D {make_number(80), make_number(52), make_number(98), XIL(= 0x2a09300), XIL(0x3), XIL(0x56e770), XIL(0x1), XIL(0xaa767c3), XIL(0x7ffd3b= 9fc610), XIL(0), XIL(0xaa767c3), XIL(0), XIL(0xffffffffffffffff), XIL(0x571= cf4), XIL(0xfffffffffe063960), XIL(0xaa767c3), XIL(0x678884), XIL(0), XIL(0= ), XIL(0x4a6d53413cc7100), XIL(0x7ffd3b9fc610), XIL(0x4fda7f), XIL(0x7ffd3b= 9fc610), XIL(0), XIL(0), XIL(0x4fdbbf), XIL(0), XIL(0x56e229), XIL(0x5), XI= L(0x7b60)} i =3D prev_modiff =3D 22 prev_buffer =3D 0x386d23a0 #12 0x000000000056d91e in internal_condition_case (bfun=3Dbfun@entry=3D0x50= 6d60 , handlers=3Dhandlers@entry=3DXIL(0x53d0), hfun=3Dhfun= @entry=3D0x4fdaa0 ) at eval.c:1336 val =3D c =3D 0x33412c0 #13 0x00000000004f86b4 in command_loop_2 (ignore=3Dignore@entry=3DXIL(0)) a= t keyboard.c:1110 val =3D XIL(0x99) #14 0x000000000056d88d in internal_catch (tag=3Dtag@entry=3DXIL(0xccc0), fu= nc=3Dfunc@entry=3D0x4f8690 , arg=3Darg@entry=3DXIL(0)) at e= val.c:1101 val =3D c =3D 0x33411a0 #15 0x00000000004f864b in command_loop () at keyboard.c:1089 #16 0x00000000004fd6b3 in recursive_edit_1 () at keyboard.c:695 val =3D #17 0x00000000004fd9ce in Frecursive_edit () at keyboard.c:766 buffer =3D #18 0x000000000041afc3 in main (argc=3D, argv=3D0x7ffd3b9fc8= e8) at emacs.c:1751 stack_bottom_variable =3D 0x7f294f292b4b <__libc_calloc+635> dumping =3D skip_args =3D 0 no_loadup =3D false junk =3D 0x0 dname_arg =3D 0x0 ch_to_dir =3D 0x0 original_pwd =3D disable_aslr =3D rlim =3D { rlim_cur =3D 10022912,=20 rlim_max =3D 18446744073709551615 } sockfd =3D -1 module_assertions =3D Lisp Backtrace: "Automatic GC" (0x0) "vector" (0x3b9fbbb8) "internal-echo-keystrokes-prefix" (0x3b9fbdd0) (gdb) xbacktrace "Automatic GC" (0x0) "vector" (0x3b9fbbb8) "internal-echo-keystrokes-prefix" (0x3b9fbdd0) In GNU Emacs 27.0.50 (build 46, x86_64-pc-linux-gnu, GTK+ Version 3.22.24) of 2018-11-27 Repository revision: e02d375cb6670e2306b9c67d7f6fd2dd1d1b2711 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.11906000 System Description: Debian GNU/Linux buster/sid Recent messages: For information about GNU Emacs and the GNU system, type C-h C-a. Source file =E2=80=98/usr/local/google/home/phst/ThirdParty/emacs-master/li= sp/emacs-lisp/bytecomp.el=E2=80=99 newer than byte-compiled file Eager macro-expansion failure: (wrong-number-of-arguments (2 . 2) 4) Configured using: 'configure --without-threads --enable-gcc-warnings=3Dwarn-only --enable-gtk-deprecation-warnings --without-pop --with-mailutils --enable-checking --enable-check-lisp-object-type --with-modules 'CFLAGS=3D-O0 -ggdb3'' Configured features: XPM JPEG TIFF GIF PNG SOUND DBUS GSETTINGS GLIB NOTIFY INOTIFY GNUTLS FREETYPE XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES JSON GMP Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message rmc dired dired-loaddefs format-spec rfc822 mml easymenu mml-sec epa derived epg epg-config gnus-util rmail rmail-loaddefs time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils phst pcase ffap thingatpt url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json map url-vars subr-x rx gnutls puny seq byte-opt gv bytecomp byte-compile cconv dbus xml cl-loaddefs cl-lib elec-pair mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote dbusbind inotify dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 108712 8519) (symbols 48 21762 1) (strings 32 32823 2052) (string-bytes 1 893166) (vectors 16 16431) (vector-slots 8 532238 6552) (floats 8 52 65) (intervals 56 221 0) (buffers 992 12)) --=20 Google Germany GmbH Erika-Mann-Stra=C3=9Fe 33 80636 M=C3=BCnchen Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Gesch=C3=A4ftsf=C3=BChrer: Paul Manicle, Halimah DeLaine Prado If you received this communication by mistake, please don=E2=80=99t forward= it to anyone else (it may contain confidential or privileged information), please erase all copies of it, including all attachments, and please let the sender know it went to the wrong person. Thanks. ------------=_1543624442-20002-1-- From unknown Mon Jun 23 23:55:39 2025 X-Loop: help-debbugs@gnu.org Subject: bug#33547: 27.0.50; Emacs stuck in infinite loop in garbage collection Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 01 Dec 2018 08:12:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33547 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Paul Eggert Cc: p.stephani2@gmail.com, eggert@cs.ucla.edu, 33547@debbugs.gnu.org Received: via spool by 33547-submit@debbugs.gnu.org id=B33547.1543651898847 (code B ref 33547); Sat, 01 Dec 2018 08:12:02 +0000 Received: (at 33547) by debbugs.gnu.org; 1 Dec 2018 08:11:38 +0000 Received: from localhost ([127.0.0.1]:56762 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gT0NF-0000Db-RT for submit@debbugs.gnu.org; Sat, 01 Dec 2018 03:11:38 -0500 Received: from eggs.gnu.org ([208.118.235.92]:52211) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gT0NE-0000DN-LY for 33547@debbugs.gnu.org; Sat, 01 Dec 2018 03:11:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gT0N6-0002xx-5E for 33547@debbugs.gnu.org; Sat, 01 Dec 2018 03:11:31 -0500 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 fencepost.gnu.org ([2001:4830:134:3::e]:55795) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gT0Mx-0002vR-2w; Sat, 01 Dec 2018 03:11:19 -0500 Received: from [176.228.60.248] (port=4039 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1gT0Mw-0007Ax-N2; Sat, 01 Dec 2018 03:11:19 -0500 Date: Sat, 01 Dec 2018 10:11:03 +0200 Message-Id: <8336rhd5uw.fsf@gnu.org> From: Eli Zaretskii In-reply-to: (message from Paul Eggert on Fri, 30 Nov 2018 16:33:16 -0800) References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 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: -6.0 (------) > From: Paul Eggert > Date: Fri, 30 Nov 2018 16:33:16 -0800 > Cc: 33547-done@debbugs.gnu.org > > Thanks for reporting that. I installed the first attached patch into > Emacs master and am marking this bug as done. I am not sure whether a > simpler patch should be installed into the emacs-26 branch, but the > second attached patch should do the trick for that if needed, not that > it's easy to test this sort of thing. If the simplified change indeed fixes the infloop, I'm okay with having it on emacs-26. Thanks. From unknown Mon Jun 23 23:55:39 2025 X-Loop: help-debbugs@gnu.org Subject: bug#33547: 27.0.50; Emacs stuck in infinite loop in garbage collection Resent-From: Paul Eggert Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 01 Dec 2018 21:47:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33547 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: p.stephani2@gmail.com, 33547@debbugs.gnu.org Received: via spool by 33547-submit@debbugs.gnu.org id=B33547.154370078032562 (code B ref 33547); Sat, 01 Dec 2018 21:47:02 +0000 Received: (at 33547) by debbugs.gnu.org; 1 Dec 2018 21:46:20 +0000 Received: from localhost ([127.0.0.1]:57338 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gTD5f-0008T8-W9 for submit@debbugs.gnu.org; Sat, 01 Dec 2018 16:46:20 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:53166) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gTD5e-0008Su-A3 for 33547@debbugs.gnu.org; Sat, 01 Dec 2018 16:46:18 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 499AA1604FE; Sat, 1 Dec 2018 13:46:12 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id FPtaP5aD3_3d; Sat, 1 Dec 2018 13:46:11 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 8A5251604FF; Sat, 1 Dec 2018 13:46:11 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id B_rmKVvPn7AB; Sat, 1 Dec 2018 13:46:11 -0800 (PST) Received: from [192.168.1.9] (cpe-23-242-74-103.socal.res.rr.com [23.242.74.103]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 330B81604FE; Sat, 1 Dec 2018 13:46:11 -0800 (PST) References: <8336rhd5uw.fsf@gnu.org> From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: Date: Sat, 1 Dec 2018 13:46:10 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 MIME-Version: 1.0 In-Reply-To: <8336rhd5uw.fsf@gnu.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 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: -3.3 (---) Eli Zaretskii wrote: > If the simplified change indeed fixes the infloop, I'm okay with > having it on emacs-26. OK, I installed it there. Although I did not reproduce the bug in the wild, the symptoms are clear and the fix is obviously correct. Plus, even if I'm wrong (which I'm not :-), the fix does not hurt anything.