mate-desktop / marco

MATE default window manager
https://mate-desktop.org
GNU General Public License v2.0
196 stars 87 forks source link

alt+esc then click causes marco SEGV in gdk_x11_window_get_xid #692

Closed hottwaj closed 2 years ago

hottwaj commented 3 years ago

Expected behaviour

alt+esc followed by click doesn't not cause a crash

Actual behaviour

see stacktrace below. after the crash, all window title bars disappear, windows no longer movable, alt-tab stops working

Steps to reproduce the behaviour

press alt+esc whilst holding down alt, click the mouse This sequence was mentioned in #617 by @antoine-levitt Prior to 1.24.1 this sequence caused a SEGV in cairo_region_num_rectangles as described in #617

MATE general version

1.24.0, marco upgraded to 1.24.1 via source package: https://launchpad.net/ubuntu/+source/marco/1.24.2-0ubuntu1

Package version

marco_1.24.2-0ubuntu1

Linux Distribution

Linux Mint 20.2 (derivative of ubuntu 20.04)

Link to bugreport of your Distribution (requirement)

stacktrace

===================================================================
 Info                                                              
===================================================================
           PID: 6725 (marco)
           UID: 1000 (hottwaj)
           GID: 1000 (hottwaj)
        Signal: 11 (SEGV)
     Timestamp: Wed 2021-08-11 11:31:18 BST (6min ago)
  Command Line: marco --composite --replace
    Executable: /usr/bin/marco
 Control Group: /user.slice/user-1000.slice/session-c2.scope
          Unit: session-c2.scope
         Slice: user-1000.slice
       Session: c2
     Owner UID: 1000 (hottwaj)
       Boot ID: 42c42680187040b5af4d7532c610679a
    Machine ID: 2a4b02270e3742148865b3f7bd5aa46f
      Hostname: rampage-hp2
       Storage: /var/lib/systemd/coredump/core.marco.1000.42c42680187040b5af4d7532c610679a.6725.1628677878000000000000.lz4
       Message: Process 6725 (marco) of user 1000 dumped core.

                Stack trace of thread 6725:
                #0  0x00007f35bab0eb66 n/a (libgdk-3.so.0 + 0x4db66)
                #1  0x00007f35bab46f02 gdk_x11_window_get_xid (libgdk-3.so.0 + 0x85f02)
                #2  0x00007f35bb64b495 n/a (libmarco-private.so.2 + 0x30495)
                #3  0x00007f35bb650b26 n/a (libmarco-private.so.2 + 0x35b26)
                #4  0x00007f35bb69b277 n/a (libmarco-private.so.2 + 0x80277)
                #5  0x00007f35bab3105f n/a (libgdk-3.so.0 + 0x7005f)
                #6  0x00007f35bab3138b n/a (libgdk-3.so.0 + 0x7038b)
                #7  0x00007f35baaf90f4 gdk_display_get_event (libgdk-3.so.0 + 0x380f4)
                #8  0x00007f35bab310f6 n/a (libgdk-3.so.0 + 0x700f6)
                #9  0x00007f35bb71a17d g_main_context_dispatch (libglib-2.0.so.0 + 0x5217d)
                #10 0x00007f35bb71a400 n/a (libglib-2.0.so.0 + 0x52400)
                #11 0x00007f35bb71a6f3 g_main_loop_run (libglib-2.0.so.0 + 0x526f3)
                #12 0x0000561f8d56e28c main (marco + 0x328c)
                #13 0x00007f35bb4500b3 __libc_start_main (libc.so.6 + 0x270b3)
                #14 0x0000561f8d56e6ae n/a (marco + 0x36ae)

                Stack trace of thread 6727:
                #0  0x00007f35bb53eaff __GI___poll (libc.so.6 + 0x115aff)
                #1  0x00007f35bb71a36e n/a (libglib-2.0.so.0 + 0x5236e)
                #2  0x00007f35bb71a4a3 g_main_context_iteration (libglib-2.0.so.0 + 0x524a3)
                #3  0x00007f35bb71a4f1 n/a (libglib-2.0.so.0 + 0x524f1)
                #4  0x00007f35bb743ad1 n/a (libglib-2.0.so.0 + 0x7bad1)
                #5  0x00007f35bb39c609 start_thread (libpthread.so.0 + 0x9609)
                #6  0x00007f35bb54b293 __clone (libc.so.6 + 0x122293)

                Stack trace of thread 6733:
                #0  0x00007f35bb53eaff __GI___poll (libc.so.6 + 0x115aff)
                #1  0x00007f35bb71a36e n/a (libglib-2.0.so.0 + 0x5236e)
                #2  0x00007f35bb71a4a3 g_main_context_iteration (libglib-2.0.so.0 + 0x524a3)
                #3  0x00007f35b8eea99d n/a (libdconfsettings.so + 0xa99d)
                #4  0x00007f35bb743ad1 n/a (libglib-2.0.so.0 + 0x7bad1)
                #5  0x00007f35bb39c609 start_thread (libpthread.so.0 + 0x9609)
                #6  0x00007f35bb54b293 __clone (libc.so.6 + 0x122293)

                Stack trace of thread 6728:
                #0  0x00007f35bb53eaff __GI___poll (libc.so.6 + 0x115aff)
                #1  0x00007f35bb71a36e n/a (libglib-2.0.so.0 + 0x5236e)
                #2  0x00007f35bb71a6f3 g_main_loop_run (libglib-2.0.so.0 + 0x526f3)
                #3  0x00007f35ba826f8a n/a (libgio-2.0.so.0 + 0x11ef8a)
                #4  0x00007f35bb743ad1 n/a (libglib-2.0.so.0 + 0x7bad1)
                #5  0x00007f35bb39c609 start_thread (libpthread.so.0 + 0x9609)
                #6  0x00007f35bb54b293 __clone (libc.so.6 + 0x122293)
===================================================================
 GDB Log                                                           
===================================================================
[New LWP 6725]
[New LWP 6727]
[New LWP 6733]
[New LWP 6728]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `marco --composite --replace'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f35bab0eb66 in ?? () from /lib/x86_64-linux-gnu/libgdk-3.so.0
[Current thread is 1 (Thread 0x7f35b9467a80 (LWP 6725))]

===================================================================
 GDB Backtrace                                                     
===================================================================
[New LWP 6725]
[New LWP 6727]
[New LWP 6733]
[New LWP 6728]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `marco --composite --replace'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f35bab0eb66 in ?? () from /lib/x86_64-linux-gnu/libgdk-3.so.0
[Current thread is 1 (Thread 0x7f35b9467a80 (LWP 6725))]
#0  0x00007f35bab0eb66 in  () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#1  0x00007f35bab46f02 in gdk_x11_window_get_xid () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#2  0x00007f35bb64b495 in  () at /lib/x86_64-linux-gnu/libmarco-private.so.2
#3  0x00007f35bb650b26 in  () at /lib/x86_64-linux-gnu/libmarco-private.so.2
#4  0x00007f35bb69b277 in  () at /lib/x86_64-linux-gnu/libmarco-private.so.2
#5  0x00007f35bab3105f in  () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#6  0x00007f35bab3138b in  () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#7  0x00007f35baaf90f4 in gdk_display_get_event () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#8  0x00007f35bab310f6 in  () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#9  0x00007f35bb71a17d in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#10 0x00007f35bb71a400 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007f35bb71a6f3 in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#12 0x0000561f8d56e28c in main ()

===================================================================
 GDB Backtrace (all threads)                                       
===================================================================
[New LWP 6725]
[New LWP 6727]
[New LWP 6733]
[New LWP 6728]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `marco --composite --replace'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f35bab0eb66 in ?? () from /lib/x86_64-linux-gnu/libgdk-3.so.0
[Current thread is 1 (Thread 0x7f35b9467a80 (LWP 6725))]

Thread 4 (Thread 0x7f35b6554700 (LWP 6728)):
#0  0x00007f35bb53eaff in __GI___poll (fds=0x561f8d696f60, nfds=2, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
        resultvar = 18446744073709551100
        sc_cancel_oldtype = 0
#1  0x00007f35bb71a36e in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f35bb71a6f3 in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f35ba826f8a in  () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
#4  0x00007f35bb743ad1 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f35bb39c609 in start_thread (arg=<optimized out>) at pthread_create.c:477
        ret = <optimized out>
        pd = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139868669036288, 7651025451392146769, 140723708670798, 140723708670799, 140723708670944, 139868669033600, -7762363293889225391, -7762356997523923631}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
#6  0x00007f35bb54b293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7f35b5d06700 (LWP 6733)):
#0  0x00007f35bb53eaff in __GI___poll (fds=0x561f8d6a3750, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
        resultvar = 18446744073709551100
        sc_cancel_oldtype = 0
#1  0x00007f35bb71a36e in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f35bb71a4a3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f35b8eea99d in  () at /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so
#4  0x00007f35bb743ad1 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f35bb39c609 in start_thread (arg=<optimized out>) at pthread_create.c:477
        ret = <optimized out>
        pd = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139868660328192, 7651025451392146769, 140723708673822, 140723708673823, 140723708673968, 139868660325504, -7762362165386568367, -7762356997523923631}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
#6  0x00007f35bb54b293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7f35b6d55700 (LWP 6727)):
#0  0x00007f35bb53eaff in __GI___poll (fds=0x561f8d682570, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
        resultvar = 18446744073709551100
        sc_cancel_oldtype = 0
#1  0x00007f35bb71a36e in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f35bb71a4a3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f35bb71a4f1 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f35bb743ad1 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f35bb39c609 in start_thread (arg=<optimized out>) at pthread_create.c:477
        ret = <optimized out>
        pd = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139868677428992, 7651025451392146769, 140723708670366, 140723708670367, 140723708670512, 139868677426304, -7762364389642756783, -7762356997523923631}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
#6  0x00007f35bb54b293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7f35b9467a80 (LWP 6725)):
#0  0x00007f35bab0eb66 in  () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#1  0x00007f35bab46f02 in gdk_x11_window_get_xid () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#2  0x00007f35bb64b495 in  () at /lib/x86_64-linux-gnu/libmarco-private.so.2
#3  0x00007f35bb650b26 in  () at /lib/x86_64-linux-gnu/libmarco-private.so.2
#4  0x00007f35bb69b277 in  () at /lib/x86_64-linux-gnu/libmarco-private.so.2
#5  0x00007f35bab3105f in  () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#6  0x00007f35bab3138b in  () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#7  0x00007f35baaf90f4 in gdk_display_get_event () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#8  0x00007f35bab310f6 in  () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#9  0x00007f35bb71a17d in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#10 0x00007f35bb71a400 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007f35bb71a6f3 in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#12 0x0000561f8d56e28c in main ()
#0  0x00007f35bab0eb66 in  () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#1  0x00007f35bab46f02 in gdk_x11_window_get_xid () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#2  0x00007f35bb64b495 in  () at /lib/x86_64-linux-gnu/libmarco-private.so.2
#3  0x00007f35bb650b26 in  () at /lib/x86_64-linux-gnu/libmarco-private.so.2
#4  0x00007f35bb69b277 in  () at /lib/x86_64-linux-gnu/libmarco-private.so.2
#5  0x00007f35bab3105f in  () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#6  0x00007f35bab3138b in  () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#7  0x00007f35baaf90f4 in gdk_display_get_event () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#8  0x00007f35bab310f6 in  () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#9  0x00007f35bb71a17d in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#10 0x00007f35bb71a400 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007f35bb71a6f3 in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#12 0x0000561f8d56e28c in main ()
lukefromdc commented 3 years ago

Just duplicated this with marco 1.26.0 on Debian Unstable, so we still have this crasher