From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.bugs Subject: bug#41239: GTK builds crashing in XTread_socket after deleting a frame Date: Fri, 15 May 2020 20:07:57 +0200 Message-ID: <9395943c-9690-3d97-067d-77d65c27c187@gmx.at> References: <83v9kz679v.fsf@gnu.org> <0af1b68c-93d3-2e8b-7810-41d60ef6a2a8@gmx.at> <837dxe61g7.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------B701668744622E400D509960" Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="42429"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 41239@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri May 15 20:09:31 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jZem2-000AsA-VL for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 15 May 2020 20:09:31 +0200 Original-Received: from localhost ([::1]:51534 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jZem1-0007mz-Hq for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 15 May 2020 14:09:29 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:50278) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jZela-0007kM-79 for bug-gnu-emacs@gnu.org; Fri, 15 May 2020 14:09:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:55381) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jZelZ-0003BC-Um for bug-gnu-emacs@gnu.org; Fri, 15 May 2020 14:09:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1jZelZ-0002pg-Ik for bug-gnu-emacs@gnu.org; Fri, 15 May 2020 14:09:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 15 May 2020 18:09:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 41239 X-GNU-PR-Package: emacs Original-Received: via spool by 41239-submit@debbugs.gnu.org id=B41239.158956609010824 (code B ref 41239); Fri, 15 May 2020 18:09:01 +0000 Original-Received: (at 41239) by debbugs.gnu.org; 15 May 2020 18:08:10 +0000 Original-Received: from localhost ([127.0.0.1]:38694 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jZekk-0002oV-Bc for submit@debbugs.gnu.org; Fri, 15 May 2020 14:08:10 -0400 Original-Received: from mout.gmx.net ([212.227.17.20]:54335) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jZeki-0002oD-8O for 41239@debbugs.gnu.org; Fri, 15 May 2020 14:08:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1589566081; bh=tXL2brGzPjxnr0Pz4gDsecBeZui7WmOZT1qZBPozXoI=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=Z6HDGlr7XoS5znuL2yVKprksvUj1+/KvCFlqKmyuAKDE59mjh5NldD+a0n2zntHZO bwZ5paYfu9eSyNcSLrvooEzKFA0KNEOqwUqz0aS/LhYSHCdLRAJuqOKbLXOFkegOBy 4UkkvkBu00fYku3PcU09Fhqnuzqrdsfpe9vrqzmI= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Original-Received: from [192.168.1.101] ([212.95.7.238]) by mail.gmx.com (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MuDbx-1jEp5A37Jl-00uYUD; Fri, 15 May 2020 20:08:01 +0200 In-Reply-To: <837dxe61g7.fsf@gnu.org> Content-Language: en-US X-Provags-ID: V03:K1:6uy8MftVSr7XAx0FIyqGSzoYk0K6Po0E5q9qd9GVjSuXngd+S61 EnXs4z4+8Cw9CR8a3S28QiTv+z2P6qkH6gGiv/eaVMmv1gM4ukoz54IQvQ7QOyCAmHhlIeA HSmghZO7ex2UKmHqSefUbHtnZBejEkJwGQdmEYOfCvJRwZAXdHCaaFPrXqM4USzuZWVYApN 5tfeO1JPsLtbgFtp2YHiw== X-UI-Out-Filterresults: notjunk:1;V03:K0:d/KFVrGR5jk=:hHy7kYy8kGymhQ6AJDrIo4 D6C2USE5IlEhTm5kcgCX7OmnmHO5cX5X3xd0fqjxoZufY3oCaBKCg5bla48gYR2pk7HOnj7jM hHRgF5YaZaSXleQgMokVRgdidG7i8xavwVd7zkJXYnUxtbUz3QT3NdizYfDHJa9YgLUuCT38P IoJoSpEd6IZJeJ2QYRHCyD7gkZe3GhJPYOATlSzp5gl27SZaf8CedbS6OfIMtcvI91e6sHvhG QInU1O62Y7s0bQTdlBoRgNyeAUbcyeV5Bm79lqMP49B34GU1ktoBRNt3Jk1+XL1sOTSeap/ce HDJI0N7PprJKvTvlsX5+rsxJsa0YzgKtFyYEmSw3eoveLETSDmhRlatqyBny0RxC/NDYEY7rj 7V4RL5KYEDCOO2QxpqIQHvZTD++RZ2xfrhETY6K3zCMZWQ7QywdYZ3kSqDmUqpsqkbNaSPi1j W6ZV8z4TQqH7xaqQCnxBf+0h1xX8WPLzIL4UZYsvDYpjtiiwhurg5Ua/fzmKLff8NPUdhOG7c dRqenC9Hff4P1FRYulvzR2kUuCr7dQMbKagSPArtbHKB0Nee6Lz64nx/q09nlCj5yleZ1RkpZ VCUQ4aCi0IBRfb5o8/qJ1f81GjbSXHGh5AGNvugjm0zSlMfQbzs1q8qwPfgqP7nDPuj2PCUlU MJBvtRWEk1iM8UWrFROyaVDbSMO3CTQKmpFpDRqJVvHiGRIdJOfA6yJ+cCHJH+lM4I/jcetd0 e9CYpsRH7y1a+M1v7emphMJYO/pkIhu4Jz0DacsUcR0a3/mla0qp0BKl5crqcQBZ76+7HJc/ X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:180348 Archived-At: This is a multi-part message in MIME format. --------------B701668744622E400D509960 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit >> Do you mean the already existing one in delete_frame or adding a new >> one? > > The existing ones cover only small parts of delete_frame, and the > safe_call2 call is outside both of them, AFAICT. So yes, I mean > blocking input around the safe_call2 call. Wouldn't that also block any 'yes-or-no-p' questions we ask when running these hooks. Anyway, it doesn't help. It crashes as soon as we unblock input, for example, thusly -------------------------- Thread 1 "emacs" received signal SIGSEGV, Segmentation fault. tcache_get (tc_idx=0) at malloc.c:2951 2951 malloc.c: Datei oder Verzeichnis nicht gefunden. (gdb) bt #0 0x00007ffff549a7be in tcache_get (tc_idx=0) at malloc.c:2951 #1 0x00007ffff549a7be in __GI___libc_malloc (bytes=16) at malloc.c:3058 #2 0x00007ffff66533ff in () at /lib/x86_64-linux-gnu/libxcb.so.1 #3 0x00007ffff6650fb5 in () at /lib/x86_64-linux-gnu/libxcb.so.1 #4 0x00007ffff66513b1 in () at /lib/x86_64-linux-gnu/libxcb.so.1 #5 0x00007ffff665143d in xcb_writev () at /lib/x86_64-linux-gnu/libxcb.so.1 #6 0x00007ffff66b697e in _XSend () at /lib/x86_64-linux-gnu/libX11.so.6 #7 0x00007ffff66b6a89 in _XEventsQueued () at /lib/x86_64-linux-gnu/libX11.so.6 #8 0x00007ffff66a87b7 in XPending () at /lib/x86_64-linux-gnu/libX11.so.6 #9 0x00007ffff6f5220d in () at /lib/x86_64-linux-gnu/libgdk-3.so.0 #10 0x00007ffff6a2b669 in g_main_context_prepare () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #11 0x00007ffff6a2c06b in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #12 0x00007ffff6a2c207 in g_main_context_pending () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #13 0x00007ffff7220b9d in gtk_events_pending () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #14 0x00000000005cf188 in XTread_socket (terminal=0x1093280, hold_quit=0x7fffffffcab0) at ../../src/xterm.c:9377 #15 0x000000000065a86d in gobble_input () at ../../src/keyboard.c:6891 #16 0x000000000065ad4d in handle_async_input () at ../../src/keyboard.c:7128 #17 0x000000000065ad6c in process_pending_signals () at ../../src/keyboard.c:7142 #18 0x000000000065adac in unblock_input_to (level=0) at ../../src/keyboard.c:7157 #19 0x000000000065add0 in unblock_input () at ../../src/keyboard.c:7176 #20 0x000000000043c478 in delete_frame (frame=XIL(0x1498445), force=XIL(0x30)) at ../../src/frame.c:2146 #21 0x000000000043cdff in Fdelete_frame (frame=XIL(0x1498445), force=XIL(0x30)) at ../../src/frame.c:2333 #22 0x00000000007b3c79 in funcall_subr (subr=0xf86040 , numargs=2, args=0x7fffffffcdf0) at ../../src/eval.c:2869 #23 0x00000000007b3722 in Ffuncall (nargs=3, args=0x7fffffffcde8) at ../../src/eval.c:2794 #24 0x0000000000836d18 in exec_byte_code (bytestr=XIL(0x7ffff3dd8ff4), vector=XIL(0x7ffff3c510bd), maxdepth=make_fixnum(7), args_template=make_fixnum(257), nargs=1, args=0x7fffffffd3f8) at ../../src/bytecode.c:633 #25 0x00000000007b43a6 in funcall_lambda (fun=XIL(0x7ffff3c51085), nargs=1, arg_vector=0x7fffffffd3f0) at ../../src/eval.c:2989 #26 0x00000000007b3766 in Ffuncall (nargs=2, args=0x7fffffffd3e8) at ../../src/eval.c:2796 #27 0x00000000007a235a in Ffuncall_interactively (nargs=2, args=0x7fffffffd3e8) at ../../src/callint.c:254 #28 0x00000000007b3b4c in funcall_subr (subr=0xf934c0 , numargs=2, args=0x7fffffffd3e8) at ../../src/eval.c:2847 #29 0x00000000007b3722 in Ffuncall (nargs=3, args=0x7fffffffd3e0) at ../../src/eval.c:2794 #30 0x00000000007a4b24 in Fcall_interactively (function=XIL(0x7ffff2c49b90), record_flag=XIL(0), keys=XIL(0x2191f35)) at ../../src/callint.c:783 #31 0x00000000007b3ca5 in funcall_subr (subr=0xf93500 , numargs=3, args=0x7fffffffd7c0) at ../../src/eval.c:2872 #32 0x00000000007b3722 in Ffuncall (nargs=4, args=0x7fffffffd7b8) at ../../src/eval.c:2794 #33 0x0000000000836d18 in exec_byte_code (bytestr=XIL(0x7ffff3d8182c), vector=XIL(0x7ffff3d81585), maxdepth=make_fixnum(13), args_template=make_fixnum(1025), nargs=4, args=0x7fffffffdd38) at ../../src/bytecode.c:633 #34 0x00000000007b43a6 in funcall_lambda (fun=XIL(0x7ffff3d81555), nargs=4, arg_vector=0x7fffffffdd18) at ../../src/eval.c:2989 #35 0x00000000007b3766 in Ffuncall (nargs=5, args=0x7fffffffdd10) at ../../src/eval.c:2796 #36 0x00000000007b3133 in call4 (fn=XIL(0x41a0), arg1=XIL(0x7ffff2c49b90), arg2=XIL(0), arg3=XIL(0x2191f35), arg4=XIL(0x30)) at ../../src/eval.c:2676 #37 0x00000000006502dd in read_char (commandflag=1, map=XIL(0x1e7aeb3), prev_event=XIL(0), used_mouse_menu=0x7fffffffe13f, end_time=0x0) at ../../src/keyboard.c:2882 #38 0x0000000000661c76 in read_key_sequence (keybuf=0x7fffffffe2d0, prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false) at ../../src/keyboard.c:9553 #39 0x000000000064b214 in command_loop_1 () at ../../src/keyboard.c:1350 #40 0x00000000007af706 in internal_condition_case (bfun=0x64ad98 , handlers=XIL(0x90), hfun=0x64a3a7 ) at ../../src/eval.c:1355 #41 0x000000000064a97d in command_loop_2 (ignore=XIL(0)) at ../../src/keyboard.c:1091 #42 0x00000000007aebba in internal_catch (tag=XIL(0xd110), func=0x64a950 , arg=XIL(0)) at ../../src/eval.c:1116 #43 0x000000000064a91b in command_loop () at ../../src/keyboard.c:1070 #44 0x0000000000649e8e in recursive_edit_1 () at ../../src/keyboard.c:714 #45 0x000000000064a086 in Frecursive_edit () at ../../src/keyboard.c:786 #46 0x000000000064048f in main (argc=2, argv=0x7fffffffe7c8) at ../../src/emacs.c:2054 Lisp Backtrace: "delete-frame" (0xffffcdf0) "handle-delete-frame" (0xffffd3f0) "funcall-interactively" (0xffffd3e8) "call-interactively" (0xffffd7c0) "command-execute" (0xffffdd18) ------------------------------ Incidentally, a pure-GTK build does not crash but leaves behind all tooltips that were open when their frame was deleted until the emacs session is closed. So it seems that we have to take care of these tooltips ourselves. The attached patch avoids the crash (and by side effect removes all tooltips when a frame gets deleted). The GTK warnings still appear. martin --------------B701668744622E400D509960 Content-Type: text/x-patch; name="tooltip-crash.diff" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="tooltip-crash.diff" diff --git a/src/frame.c b/src/frame.c index 4dd8bb1804..e5bf21bd3f 100644 =2D-- a/src/frame.c +++ b/src/frame.c @@ -2011,6 +2011,12 @@ delete_frame (Lisp_Object frame, Lisp_Object force) /* At this point, we are committed to deleting the frame. There is no more chance for errors to prevent it. */ + + /* Hide any pending tooltip (Bug#41239) unless FRAME itself is a + tooltip frame. */ + if (!is_tooltip_frame) + Fx_hide_tip (); + minibuffer_selected =3D EQ (minibuf_window, selected_window); sf =3D SELECTED_FRAME (); /* Don't let the frame remain selected. */ --------------B701668744622E400D509960--