masm11 / emacs

Mirror of GNU Emacs
http://www.gnu.org/software/emacs/
GNU General Public License v3.0
198 stars 14 forks source link

Emacs daemon crash after several Sway reloads #102

Closed declantsien closed 3 years ago

declantsien commented 3 years ago

See the sreencast. https://streamable.com/cp5zwx

The emacs window is brought up using a system keybinding to emacsclient -c -n Screen flashes means a sway reload.

masm11 commented 3 years ago

I ran emacs -Q --fg-daemon on gdb, and executed emacsclient -c -n on terminal. I reloaded sway many times but it did not reproduce.

declantsien commented 3 years ago

Reload sway while a frame is open. After reloaded, close opened frames, open new frames Try several times.

Crash should happen when a new frame is created. Crash should happen when closing a frame.

masm11 commented 3 years ago

Thanks, but it does not reproduce. I'll try more times later.

declantsien commented 3 years ago

Not sure whether this helps or not Also I just started to learn to use gdb debugger

gdb --args ./emacs -fg-daemon -Q
GNU gdb (GDB) 10.2
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./emacs...
warning: File "/home/declan/src/emacs/src/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
To enable execution of this file add
    add-auto-load-safe-path /home/declan/src/emacs/src/.gdbinit
line to your configuration file "/home/declan/.gdbinit".
To completely disable this security protection add
    set auto-load safe-path /
line to your configuration file "/home/declan/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the shell:
    info "(gdb)Auto-loading safe path"
(gdb) r
Starting program: /home/declan/src/emacs/src/emacs -fg-daemon -Q
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".

Warning: due to a long standing Gtk+ bug
https://gitlab.gnome.org/GNOME/gtk/issues/221
Emacs might crash when run in daemon mode and the X11 connection is unexpectedly lost.
Using an Emacs configured with --with-x-toolkit=lucid does not have this problem.
[New Thread 0x7ffff2158640 (LWP 109716)]
Starting Emacs daemon.
[New Thread 0x7ffff1907640 (LWP 109721)]
[New Thread 0x7ffff105d640 (LWP 109722)]
[New Thread 0x7ffff085c640 (LWP 109723)]
[New Thread 0x7fffe3ba1640 (LWP 109724)]
[Thread 0x7fffe3ba1640 (LWP 109724) exited]

(emacs:109712): GLib-GObject-CRITICAL **: 22:54:42.607: g_closure_invoke: assertion 'closure->marshal || real_closure->meta_marshal' failed

(emacs:109712): GLib-GObject-CRITICAL **: 22:54:48.197: g_closure_invoke: assertion 'closure->marshal || real_closure->meta_marshal' failed

(emacs:109712): GLib-GObject-CRITICAL **: 22:54:50.565: g_closure_invoke: assertion 'closure->marshal || real_closure->meta_marshal' failed
[Thread 0x7ffff1907640 (LWP 109721) exited]
free(): invalid next size (fast)

Thread 1 "emacs" received signal SIGABRT, Aborted.
0x00007ffff5b64d22 in raise () from /usr/lib/libc.so.6
(gdb) backtrace
#0  0x00007ffff5b64d22 in raise () at /usr/lib/libc.so.6
#1  0x00007ffff5b4e862 in abort () at /usr/lib/libc.so.6
#2  0x00007ffff5ba6d28 in __libc_message () at /usr/lib/libc.so.6
#3  0x00007ffff5bae92a in  () at /usr/lib/libc.so.6
#4  0x00007ffff5bafd7c in _int_free () at /usr/lib/libc.so.6
#5  0x00007ffff5bb39e8 in free () at /usr/lib/libc.so.6
#6  0x00007ffff79b2557 in  () at /usr/lib/libgtk-3.so.0
#7  0x00007ffff720b801 in g_object_unref () at /usr/lib/libgobject-2.0.so.0
#8  0x00007ffff78f3638 in  () at /usr/lib/libgtk-3.so.0
#9  0x00007ffff71fed19 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#10 0x00007ffff7227f56 in  () at /usr/lib/libgobject-2.0.so.0
#11 0x00007ffff721bcad in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#12 0x00007ffff721c210 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#13 0x00007ffff7b2e742 in  () at /usr/lib/libgtk-3.so.0
#14 0x00007ffff7200bea in g_object_run_dispose () at /usr/lib/libgobject-2.0.so.0
#15 0x00007ffff79e2bbd in  () at /usr/lib/libgtk-3.so.0
#16 0x00007ffff78f3638 in  () at /usr/lib/libgtk-3.so.0
#17 0x00007ffff71fed19 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#18 0x00007ffff7227f56 in  () at /usr/lib/libgobject-2.0.so.0
#19 0x00007ffff721bcad in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#20 0x00007ffff721c210 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#21 0x00007ffff7b2e742 in  () at /usr/lib/libgtk-3.so.0
#22 0x00007ffff7200bea in g_object_run_dispose () at /usr/lib/libgobject-2.0.so.0
#23 0x00007ffff79d9806 in  () at /usr/lib/libgtk-3.so.0
#24 0x00007ffff71fed19 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#25 0x00007ffff7227f56 in  () at /usr/lib/libgobject-2.0.so.0
#26 0x00007ffff721bcad in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#27 0x00007ffff721c210 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#28 0x00007ffff7b2e742 in  () at /usr/lib/libgtk-3.so.0
#29 0x00007ffff7200bea in g_object_run_dispose () at /usr/lib/libgobject-2.0.so.0
#30 0x00007ffff79e2bbd in  () at /usr/lib/libgtk-3.so.0
#31 0x00007ffff78f3638 in  () at /usr/lib/libgtk-3.so.0
#32 0x00007ffff71fed19 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#33 0x00007ffff7227f56 in  () at /usr/lib/libgobject-2.0.so.0
#34 0x00007ffff721bcad in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#35 0x00007ffff721c210 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#36 0x00007ffff7b2e742 in  () at /usr/lib/libgtk-3.so.0
#37 0x00007ffff7200bea in g_object_run_dispose () at /usr/lib/libgobject-2.0.so.0
#38 0x00007ffff79d9806 in  () at /usr/lib/libgtk-3.so.0
#39 0x00007ffff71fed19 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#40 0x00007ffff7227f56 in  () at /usr/lib/libgobject-2.0.so.0
#41 0x00007ffff721bcad in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#42 0x00007ffff721c210 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#43 0x00007ffff7b2e742 in  () at /usr/lib/libgtk-3.so.0
#44 0x00007ffff7200bea in g_object_run_dispose () at /usr/lib/libgobject-2.0.so.0
#45 0x00007ffff79e2bbd in  () at /usr/lib/libgtk-3.so.0
#46 0x00007ffff78f3638 in  () at /usr/lib/libgtk-3.so.0
#47 0x00007ffff71fed19 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#48 0x00007ffff7227f56 in  () at /usr/lib/libgobject-2.0.so.0
#49 0x00007ffff721bcad in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#50 0x00007ffff721c210 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#51 0x00007ffff7b2e742 in  () at /usr/lib/libgtk-3.so.0
#52 0x00007ffff7200bea in g_object_run_dispose () at /usr/lib/libgobject-2.0.so.0
#53 0x00007ffff79d9806 in  () at /usr/lib/libgtk-3.so.0
#54 0x00007ffff71fed19 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#55 0x00007ffff7227f56 in  () at /usr/lib/libgobject-2.0.so.0
#56 0x00007ffff721bcad in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#57 0x00007ffff721c210 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#58 0x00007ffff7b2e742 in  () at /usr/lib/libgtk-3.so.0
#59 0x00007ffff7200bea in g_object_run_dispose () at /usr/lib/libgobject-2.0.so.0
#60 0x00007ffff79e2bbd in  () at /usr/lib/libgtk-3.so.0
--Type <RET> for more, q to quit, c to continue without paging--
#61 0x00007ffff78f3638 in  () at /usr/lib/libgtk-3.so.0
#62 0x00007ffff71fed19 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#63 0x00007ffff7227f56 in  () at /usr/lib/libgobject-2.0.so.0
#64 0x00007ffff721bcad in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#65 0x00007ffff721c210 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#66 0x00007ffff7b2e742 in  () at /usr/lib/libgtk-3.so.0
#67 0x00007ffff7200bea in g_object_run_dispose () at /usr/lib/libgobject-2.0.so.0
#68 0x00007ffff79d9806 in  () at /usr/lib/libgtk-3.so.0
#69 0x00007ffff71fed19 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#70 0x00007ffff7227f56 in  () at /usr/lib/libgobject-2.0.so.0
#71 0x00007ffff721bcad in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#72 0x00007ffff721c210 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#73 0x00007ffff7b2e742 in  () at /usr/lib/libgtk-3.so.0
#74 0x00007ffff7200bea in g_object_run_dispose () at /usr/lib/libgobject-2.0.so.0
#75 0x00007ffff79e2bbd in  () at /usr/lib/libgtk-3.so.0
#76 0x00007ffff78f3638 in  () at /usr/lib/libgtk-3.so.0
#77 0x00007ffff71fed19 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#78 0x00007ffff7227f56 in  () at /usr/lib/libgobject-2.0.so.0
#79 0x00007ffff721bcad in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#80 0x00007ffff721c210 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#81 0x00007ffff7b2e742 in  () at /usr/lib/libgtk-3.so.0
#82 0x00007ffff7200bea in g_object_run_dispose () at /usr/lib/libgobject-2.0.so.0
#83 0x00007ffff78a6ef0 in  () at /usr/lib/libgtk-3.so.0
#84 0x00007ffff78f3638 in  () at /usr/lib/libgtk-3.so.0
#85 0x00007ffff71fed19 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#86 0x00007ffff7227f56 in  () at /usr/lib/libgobject-2.0.so.0
#87 0x00007ffff721bcad in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#88 0x00007ffff721c210 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#89 0x00007ffff7b2e742 in  () at /usr/lib/libgtk-3.so.0
#90 0x00007ffff7200bea in g_object_run_dispose () at /usr/lib/libgobject-2.0.so.0
#91 0x00007ffff7b3f4ea in  () at /usr/lib/libgtk-3.so.0
#92 0x00007ffff78f3638 in  () at /usr/lib/libgtk-3.so.0
#93 0x00007ffff71feddf in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#94 0x00007ffff7227f56 in  () at /usr/lib/libgobject-2.0.so.0
C#95 0x00007ffff721bcad in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#96 0x00007ffff721c210 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#97 0x00007ffff7b2e742 in  () at /usr/lib/libgtk-3.so.0
#98 0x00007ffff7b3e1dd in  () at /usr/lib/libgtk-3.so.0
#99 0x00007ffff7200bea in g_object_run_dispose () at /usr/lib/libgobject-2.0.so.0
#100 0x00005555558b2c13 in x_free_frame_resources (f=0x5555563b9ff0) at pgtkterm.c:276
#101 0x00005555558b2d2a in x_destroy_window (f=0x5555563b9ff0) at pgtkterm.c:307
#102 0x00005555555b0933 in delete_frame (frame=..., force=...) at frame.c:2179
#103 0x00005555555b135e in Fdelete_frame (frame=..., force=...) at frame.c:2370
#104 0x00005555557eb68d in funcall_subr (subr=0x555555dbb760 <Sdelete_frame>, numargs=2, args=0x7fffffffce10) at eval.c:3116
#105 0x00005555557eb0ab in Ffuncall (nargs=3, args=0x7fffffffce08) at eval.c:3039
#106 0x000055555584a96e in exec_byte_code (bytestr=..., vector=..., maxdepth=..., args_template=..., nargs=1, args=0x7fffffffd438) at bytecode.c:632
#107 0x00005555557eb914 in fetch_and_exec_byte_code (fun=..., syms_left=..., nargs=1, args=0x7fffffffd430) at eval.c:3163
#108 0x00005555557ebddb in funcall_lambda (fun=..., nargs=1, arg_vector=0x7fffffffd430) at eval.c:3244
#109 0x00005555557eb0ff in Ffuncall (nargs=2, args=0x7fffffffd428) at eval.c:3043
#110 0x00005555557de27c in Ffuncall_interactively (nargs=2, args=0x7fffffffd428) at callint.c:260
#111 0x00005555557eb539 in funcall_subr (subr=0x555555dc8460 <Sfuncall_interactively>, numargs=2, args=0x7fffffffd428) at eval.c:3094
#112 0x00005555557eb0ab in Ffuncall (nargs=3, args=0x7fffffffd420) at eval.c:3039
#113 0x00005555557e0ac8 in Fcall_interactively (function=..., record_flag=..., keys=...) at callint.c:791
#114 0x00005555557eb6bc in funcall_subr (subr=0x555555dc84a0 <Scall_interactively>, numargs=3, args=0x7fffffffd7c0) at eval.c:3119
#115 0x00005555557eb0ab in Ffuncall (nargs=4, args=0x7fffffffd7b8) at eval.c:3039
#116 0x000055555584a96e in exec_byte_code (bytestr=..., vector=..., maxdepth=..., args_template=..., nargs=4, args=0x7fffffffdd48) at bytecode.c:632
#117 0x00005555557eb914 in fetch_and_exec_byte_code (fun=..., syms_left=..., nargs=4, args=0x7fffffffdd28) at eval.c:3163
#118 0x00005555557ebddb in funcall_lambda (fun=..., nargs=4, arg_vector=0x7fffffffdd28) at eval.c:3244
#119 0x00005555557eb0ff in Ffuncall (nargs=5, args=0x7fffffffdd20) at eval.c:3043
#120 0x00005555557ea9eb in call4 (fn=..., arg1=..., arg2=..., arg3=..., arg4=...) at eval.c:2921
#121 0x0000555555706903 in read_char (commandflag=1, map=..., prev_event=..., used_mouse_menu=0x7fffffffe0cd, end_time=0x0) at keyboard.c:2885
--Type <RET> for more, q to quit, c to continue without paging--
#122 0x0000555555718b6e in read_key_sequence (keybuf=0x7fffffffe2b0, prompt=..., dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:9499
#123 0x0000555555701409 in command_loop_1 () at keyboard.c:1353
#124 0x00005555557e67b6 in internal_condition_case (bfun=0x555555700f69 <command_loop_1>, handlers=..., hfun=0x5555557004f7 <cmd_error>) at eval.c:1478
#125 0x0000555555700b22 in command_loop_2 (ignore=...) at keyboard.c:1094
#126 0x00005555557e588f in internal_catch (tag=..., func=0x555555700aec <command_loop_2>, arg=...) at eval.c:1198
#127 0x0000555555700ab8 in command_loop () at keyboard.c:1073
#128 0x00005555556fffbf in recursive_edit_1 () at keyboard.c:720
#129 0x00005555557001c5 in Frecursive_edit () at keyboard.c:789
#130 0x00005555556fbcae in main (argc=3, argv=0x7fffffffe738) at emacs.c:2313 
masm11 commented 3 years ago
#100 0x00005555558b2c13 in x_free_frame_resources (f=0x5555563b9ff0) at pgtkterm.c:276
#101 0x00005555558b2d2a in x_destroy_window (f=0x5555563b9ff0) at pgtkterm.c:307
#102 0x00005555555b0933 in delete_frame (frame=..., force=...) at frame.c:2179
#103 0x00005555555b135e in Fdelete_frame (frame=..., force=...) at frame.c:2370

These are frame destroying functions. When did this crash occur? When creating a frame, or when destroying a frame?

declantsien commented 3 years ago

My bad. It seems that the issue raised when closing a frame.

masm11 commented 3 years ago

OK. What version of gtk3 are you using?

declantsien commented 3 years ago

It's OK to close this one if this does not happen to you. :) I have Firefox/Chromium sometimes crashes too. Not a big issue.