Subject: Re: bug#9869: crash when suspending with Gtk3

From: Jan Djärv <[email-masked]>
Date: Sun, 30 Oct 2011 19:06:05 +0100

Hello.

Forgot to say that -xrm is ignored when -Q is used.  Anyway, I can reproduce this, but the bug does not occur when running synchronous.  I installed the fix posted by Adam Sjøgren.

	Jan D.

28 okt 2011 kl. 19:37 skrev Dan Nicolaescu:

> Jan Djärv <[email-masked]> writes:
> 
>> 28 okt 2011 kl. 14:05 skrev Dan Nicolaescu:
>> 
>>> "Jan D." <[email-masked]> writes:
>>> 
>>>> 
>>>> You must run Emacs in synchronous mode for crashes in X to make any sense.
>>> 
>>> I added 
>>> #define SYNC_INPUT 1
>>> to config.h and recompiled.  Is this the right thing to do?
>> 
>> SYNC_INPUT is not related, I meant synchronous X11 mode.
>> You turn it on by starting emacs like:
>> % emacs -xrm '*synchronous: on'
> 
> Thanks, here's that one:
> 
> 
> (gdb) r
> Starting program: /tmp/objs-writable/src/emacs -xrm \*synchronous:\ on -Q
> [Thread debugging using libthread_db enabled]
> [New Thread 0x7ffff69c8700 (LWP 16565)]
> [New Thread 0x7ffff61c7700 (LWP 16566)]
> X protocol error: BadMatch (invalid parameter attributes) on protocol request 42
> When compiled with GTK, Emacs cannot recover from X disconnects.
> This is a GTK bug: https://bugzilla.gnome.org/show_bug.cgi?id=85715
> For details, see etc/PROBLEMS.
> 
> Breakpoint 1, abort () at /tmp/trunk/src/emacs.c:385
> 385     {
> Missing separate debuginfos, use: debuginfo-install GConf2-2.32.3-1.fc15.x86_64 ORBit2-2.14.19-2.fc15.x86_64 adwaita-gtk3-theme-3.0.2-1.fc15.x86_64 alsa-lib-1.0.24-2.fc15.x86_64 atk-2.0.0-1.fc15.x86_64 cairo-1.10.2-3.fc15.x86_64 cairo-gobject-1.10.2-3.fc15.x86_64 dbus-libs-1.4.6-5.fc15.x86_64 dconf-0.7.5-1.x86_64 expat-2.0.1-11.fc15.x86_64 fontconfig-2.8.0-3.fc15.x86_64 freetype-2.4.4-5.fc15.x86_64 gdk-pixbuf2-2.23.3-2.fc15.x86_64 giflib-4.1.6-4.fc15.x86_64 glib2-2.28.8-1.fc15.x86_64 glibc-2.14-5.x86_64 gtk3-3.0.12-1.fc15.x86_64 gvfs-1.8.2-1.fc15.x86_64 libICE-1.0.6-3.fc15.x86_64 libSM-1.2.0-2.fc15.x86_64 libX11-1.4.3-1.fc15.x86_64 libXau-1.0.6-2.fc15.x86_64 libXcomposite-0.4.3-2.fc15.x86_64 libXcursor-1.1.11-3.fc15.x86_64 libXdamage-1.1.3-2.fc15.x86_64 libXext-1.2.0-2.fc15.x86_64 libXfixes-5.0-1.fc15.x86_64 libXft-2.2.0-2.fc15.x86_64 libXi-1.4.3-2.fc15.x86_64 libXinerama-1.1.1-2.fc15.x86_64 libXpm-3.5.8-3.fc15.x86_64 libXrandr-1.3.1-2.fc15.x86_64 libXrender-0.9.6-2.fc15.x86_64 libcroco-0.6.2-6.fc15.x86_64 libgcc-4.6.1-9.fc15.x86_64 libjpeg-turbo-1.1.1-1.fc15.x86_64 libpng-1.2.46-1.fc15.x86_64 librsvg2-2.34.0-2.fc15.x86_64 libselinux-2.0.99-4.fc15.x86_64 libtiff-3.9.5-1.fc15.x86_64 libudev-167-6.fc15.x86_64 libuuid-2.19.1-1.4.fc15.x86_64 libxcb-1.7-2.fc15.x86_64 libxml2-2.7.8-6.fc15.x86_64 ncurses-libs-5.8-2.20110319.fc15.x86_64 pango-1.28.4-1.fc15.x86_64 pixman-0.20.2-2.fc15.x86_64 zlib-1.2.5-3.fc15.x86_64
> (gdb) xbacktrace 
> (gdb) bt full
> #0  abort () at /tmp/trunk/src/emacs.c:385
> No locals.
> #1  0x00000000004bd928 in x_connection_closed (dpy=<optimized out>, error_message=<optimized out>)
>    at /tmp/trunk/src/xterm.c:7805
>        dpyinfo = 0xf4b800
>        frame = <optimized out>
>        tail = 0xb5f952
>        idx = 0x3
> #2  0x00000000004bdd75 in x_error_quitter (display=0xeb5200, event=0x7fffffffcce0)
>    at /tmp/trunk/src/xterm.c:7893
>        buf = "BadMatch (invalid parameter attributes)", '\000' <repeats 216 times>
>        buf1 = 
>    "X protocol error: BadMatch (invalid parameter attributes) on protocol request 42\000\312\377\377\377\177\000\000\330\025\225\000\000\000\000\000\335\025\225\000\000\000\000\000\330\025\225", '\000' <repeats 13 times>, "\002", '\000' <repeats 15 times>, "\t\302V", '\000' <repeats 13 times>"\204, \222O\000\000\000\000\000\237\242T\001\000\000\000\000\320\314\377\377\377\177\000\000\020\254\350\000\000\000\000\000\033\000\000\000\000\000\000\000\065\000\000\000\000\000\000\000\300\314\254\367\377\177\000\000\006\062\003g\000\000\000\000\006\230\000\231<\000\000\000\320\314\377\377\377\177\000\000\006\000\000\000\000\000\000\000\340\314\377\377\377\177\000\000\377\377\377\377\000\000\000\000\264"...
> #3  0x00000000004bddad in x_error_handler (display=<optimized out>, event=<optimized out>)
>    at /tmp/trunk/src/xterm.c:7863
> No locals.
> #4  0x0000003fc644810f in _XError () from /usr/lib64/libX11.so.6
> No symbol table info available.
> #5  0x0000003fc6444f91 in ?? () from /usr/lib64/libX11.so.6
> No symbol table info available.
> #6  0x0000003fc6444fd5 in ?? () from /usr/lib64/libX11.so.6
> No symbol table info available.
> #7  0x0000003fc6445a35 in _XEventsQueued () from /usr/lib64/libX11.so.6
> No symbol table info available.
> #8  0x0000003fc643656d in XPending () from /usr/lib64/libX11.so.6
> No symbol table info available.
> #9  0x0000003fc944680b in ?? () from /usr/lib64/libgdk-3.so.0
> No symbol table info available.
> #10 0x0000003c9b441cc2 in g_main_context_prepare () from /lib64/libglib-2.0.so.0
> No symbol table info available.
> #11 0x0000003c9b442bbd in ?? () from /lib64/libglib-2.0.so.0
> No symbol table info available.
> #12 0x0000003c9b443150 in g_main_context_pending () from /lib64/libglib-2.0.so.0
> No symbol table info available.
> #13 0x0000003fca5473dd in gtk_events_pending () from /usr/lib64/libgtk-3.so.0
> No symbol table info available.
> #14 0x00000000004bdb9d in XTread_socket (terminal=<optimized out>, expected=<optimized out>, hold_quit=0x7fffffffd220)
>    at /tmp/trunk/src/xterm.c:7152
>        count = 0x0
> #15 0x00000000004fd977 in read_avail_input (expected=0x1)
>    at /tmp/trunk/src/keyboard.c:6821
>        nr = <optimized out>
>        hold_quit = {
>          kind = NO_EVENT, 
>          code = 0x0, 
>          part = scroll_bar_above_handle, 
>          modifiers = 0x0, 
>          x = 0x0, 
>          y = 0x0, 
>          timestamp = 0x0, 
>          padding = {0x0, 0x0}, 
>          frame_or_window = 0x0, 
>          arg = 0x0
>        }
>        next = 0x0
>        nread = 0x0
>        err = <optimized out>
>        t = 0xf48c90
> #16 0x00000000004fda9a in handle_async_input () at /tmp/trunk/src/keyboard.c:7149
>        nread = 0xf5
> #17 0x00000000004fd0f5 in process_pending_signals ()
> ---Type <return> to continue, or q <return> to quit---
>    at /tmp/trunk/src/keyboard.c:7165
> No locals.
> #18 0x00000000005ab0a5 in wait_reading_process_output (time_limit=0x1e, microsecs=0x0, read_kbd=<optimized out>, do_display=0x1, 
>    wait_for_cell=<optimized out>, wait_proc=0x0, just_wait_proc=0x0)
>    at /tmp/trunk/src/process.c:4340
>        timeout_reduced_for_timers = 0x0
>        channel = <optimized out>
>        nfds = <optimized out>
>        Available = {
>          fds_bits = {0x20, 0x0 <repeats 15 times>}
>        }
>        Writeok = {
>          fds_bits = {0x0 <repeats 16 times>}
>        }
>        check_write = <optimized out>
>        check_delay = <optimized out>
>        no_avail = <optimized out>
>        xerrno = 0xb
>        proc = <optimized out>
>        timeout = {
>          tv_sec = 0x0, 
>          tv_usec = 0x0
>        }
>        end_time = {
>          tv_sec = 0x4eaae78e, 
>          tv_usec = 0x6b092
>        }
>        wait_channel = 0xffffffff
>        got_some_input = 0x1
>        count = 0x2
> #19 0x000000000041d044 in sit_for (timeout=0x78, reading=0x1, do_display=0x1)
>    at /tmp/trunk/src/dispnew.c:5971
>        sec = <optimized out>
>        usec = <optimized out>
> #20 0x00000000005030ad in read_char (commandflag=0x1, nmaps=0x2, maps=0x7fffffffda70, prev_event=0xb5f952, used_mouse_menu=
>    0x7fffffffdbf8, end_time=0x0) at /tmp/trunk/src/keyboard.c:2687
>        tem0 = <optimized out>
>        timeout = <optimized out>
>        delay_level = 0x4
>        buffer_size = <optimized out>
>        c = 0xb5f952
>        jmpcount = 0x2
>        local_getcjmp = {{
>            __jmpbuf = {0xb5f952, 0x91c6b4e6dab59f1e, 0x0, 0x1, 0x0, 0x0, 0x6e394a7286119f1e, 0x91c6b52d1d9b9f1e}, 
>            __mask_was_saved = 0x0, 
>            __saved_mask = {
>              __val = {0xbe, 0xb666e5, 0x5b9b55, 0xb67e72, 0xbf, 0xb67e72, 0xb67e72, 0x11bd156, 0x5ba564, 0xb666e5, 
>    0x7fffffffda30, 0xb67e72, 0xc0, 0x300, 0x565a56, 0x2000}
>            }
>          }}
>        save_jump = {{
>            __jmpbuf = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, 
>            __mask_was_saved = 0x0, 
>            __saved_mask = {
>              __val = {0x0 <repeats 16 times>}
>            }
>          }}
>        key_already_recorded = 0x0
>        tem = <optimized out>
>        save = <optimized out>
>        previous_echo_area_message = 0xb5f952
>        also_record = 0xb5f952
>        reread = 0x0
>        polling_stopped_here = 0x0
>        orig_kboard = 0xf49910
> #21 0x0000000000503e07 in read_key_sequence (keybuf=0x7fffffffdc50, prompt=0xb5f952, dont_downcase_last=0x0, 
> ---Type <return> to continue, or q <return> to quit---
>    can_return_switch_frame=0x1, fix_current_buffer=0x1, bufsize=0x1e)
>    at /tmp/trunk/src/keyboard.c:9290
>        interrupted_kboard = 0xf49910
>        interrupted_frame = 0x1007750
>        key = <optimized out>
>        used_mouse_menu = 0x0
>        echo_local_start = 0x0
>        last_real_key_start = 0x0
>        keys_local_start = 0x0
>        local_first_binding = 0x0
>        from_string = 0xb5f952
>        count = 0x2
>        t = 0x0
>        echo_start = 0x0
>        keys_start = 0x0
>        nmaps = <optimized out>
>        nmaps_allocated = 0x2
>        defs = 0x7fffffffda50
>        submaps = 0x7fffffffda70
>        orig_local_map = 0xe31b66
>        orig_keymap = 0xb5f952
>        localized_local_map = 0x0
>        first_binding = 0x0
>        first_unbound = 0x1f
>        mock_input = 0x0
>        fkey = {
>          parent = 0xd396d6, 
>          map = 0xd396d6, 
>          start = 0x0, 
>          end = 0x0
>        }
>        keytran = {
>          parent = 0xb5a9a6, 
>          map = 0xb5a9a6, 
>          start = 0x0, 
>          end = 0x0
>        }
>        indec = {
>          parent = 0xd396e6, 
>          map = 0xd396e6, 
>          start = 0x0, 
>          end = 0x0
>        }
>        shift_translated = 0x0
>        delayed_switch_frame = 0xb5f952
>        original_uppercase = 0x0
>        original_uppercase_position = 0xffffffff
>        dummyflag = 0x0
>        starting_buffer = 0xb666e0
>        fake_prefixed_keys = 0xb5f952
> #22 0x0000000000505ad5 in command_loop_1 () at /tmp/trunk/src/keyboard.c:1447
>        cmd = <optimized out>
>        keybuf = {0x68, 0x8b80f8, 0x4000000000004000, 0x4000000000000800, 0xffffffff, 0x7fffffffe4a0, 0x7fffffffdd70, 0x56b8b6, 
>    0x3c99403c88, 0x408ada, 0x3c99409700, 0x400630, 0x0, 0x7ffff7acce98, 0x7ffff7ad34c8, 0x4087bf, 0x3c99410900, 0x403ba0, 
>    0x100000000, 0x1000003c5, 0x0, 0x3c992205e0, 0x0, 0xb5f952, 0x40, 0xb9b276, 0x7fffffffe388, 0x4000000000020000, 0xb5f952, 
>    0x55a9d2}
>        i = <optimized out>
>        prev_modiff = 0xa
>        prev_buffer = 0xb666e0
> #23 0x000000000056a8a6 in internal_condition_case (bfun=0x505900 <command_loop_1>, handlers=0xb6c502, hfun=0x4fa990 <cmd_error>)
>    at /tmp/trunk/src/eval.c:1499
>        val = <optimized out>
>        c = {
>          tag = 0xb5f952, 
>          val = 0xb5f952, 
>          next = 0x7fffffffdf30, 
> ---Type <return> to continue, or q <return> to quit---
>          gcpro = 0x0, 
>          jmp = {{
>              __jmpbuf = {0xc979a0, 0x91c6b41fdb919f1e, 0xb5f952, 0x7fffffffe388, 0xffffffff, 0x7fffffffe4a0, 
>    0x6e394a7293519f1e, 0x91c6b52078679f1e}, 
>              __mask_was_saved = 0x0, 
>              __saved_mask = {
>                __val = {0x0, 0xffffffff, 0x0, 0x0, 0xc979a0, 0x826688, 0x0, 0xffffffff, 0x7fffffffe4a0, 0x0, 0x3c9900d792, 0x1, 
>    0x0, 0x0, 0x3c99409700, 0x0}
>              }
>            }}, 
>          backlist = 0x0, 
>          handlerlist = 0x0, 
>          lisp_eval_depth = 0x0, 
>          pdlcount = 0x2, 
>          poll_suppress_count = 0x1, 
>          interrupt_input_blocked = 0x0, 
>          byte_stack = 0x0
>        }
>        h = {
>          handler = 0xb6c502, 
>          var = 0xb5f952, 
>          chosen_clause = 0xb5f952, 
>          tag = 0x7fffffffddc0, 
>          next = 0x0
>        }
> #24 0x00000000004f8efe in command_loop_2 (ignore=<optimized out>)
>    at /tmp/trunk/src/keyboard.c:1158
>        val = 0xf5
> #25 0x000000000056a788 in internal_catch (tag=0x3c99793800, func=0x4f8ee0 <command_loop_2>, arg=0xb5f952)
>    at /tmp/trunk/src/eval.c:1256
>        c = {
>          tag = 0xb6b492, 
>          val = 0xb5f952, 
>          next = 0x0, 
>          gcpro = 0x0, 
>          jmp = {{
>              __jmpbuf = {0xc979a0, 0x91c6b41fdb919f1e, 0xb5f952, 0x7fffffffe388, 0xffffffff, 0x7fffffffe4a0, 
>    0x6e394a7296519f1e, 0x91c6b52066af9f1e}, 
>              __mask_was_saved = 0x0, 
>              __saved_mask = {
>                __val = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5b1389, 0x10b3a60, 0x7fffffffe068, 0x0, 0x7fffffffe060, 0x5f3a83, 
>    0xb5f952, 0xb96b42, 0x56dfe6, 0xe}
>              }
>            }}, 
>          backlist = 0x0, 
>          handlerlist = 0x0, 
>          lisp_eval_depth = 0x0, 
>          pdlcount = 0x2, 
>          poll_suppress_count = 0x1, 
>          interrupt_input_blocked = 0x0, 
>          byte_stack = 0x0
>        }
> #26 0x00000000004fa467 in command_loop () at /tmp/trunk/src/keyboard.c:1137
> No locals.
> #27 recursive_edit_1 () at /tmp/trunk/src/keyboard.c:757
>        count = 0x1
>        val = 0xb5f952
> #28 0x00000000004fa79c in Frecursive_edit () at /tmp/trunk/src/keyboard.c:821
>        count = 0x0
>        buffer = 0xb5f952
> #29 0x000000000041255d in main (argc=0x4, argv=<optimized out>)
>    at /tmp/trunk/src/emacs.c:1707
>        dummy = 0x3c9b005bb3
>        stack_bottom_variable = 0x0
>        do_initial_setlocale = <optimized out>
>        skip_args = 0x0
> ---Type <return> to continue, or q <return> to quit---
>        rlim = {
>          rlim_cur = 0x850e80, 
>          rlim_max = 0xffffffffffffffff
>        }
>        no_loadup = 0x0
>        junk = 0x0
>        dname_arg = 0x0
>        ch_to_dir = 0x3c9940fd48 "+*"