touchscreen input crashes X
Steps to reproduce
- open a gtk3 application
- open a menu
- touch (with the touchscreen) the application titlebar or the start bar
- X crashes instantly
this behavior was found using the gtk demo application and in other gtk based applications.
however in firefox i noticed that this only happens when using xinput2, if not firefox calls gdk_disable_multidevice() and the crash does not happen
Version information
- GTK+ 3.22.30
- linux mint 19
Backtrace
GNU gdb (Ubuntu 8.1-0ubuntu3) 8.1.0.20180409-git
Copyright (C) 2018 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-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://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 /usr/lib/xorg/Xorg...Reading symbols from /usr/lib/debug/.build-id/34/a9250370308d905838793061affea00de00ceb.debug...done.
done.
[New LWP 27990]
[New LWP 27993]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/lib/xorg/Xorg -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -noliste'.
Program terminated with signal SIGABRT, Aborted.
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
[Current thread is 1 (Thread 0x7fabc04d9600 (LWP 27990))]
(gdb) bt full
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
set = {__val = {171516928, 0, 0, 0, 0, 0, 94707062363680, 67108868, 140375599380624, 0, 0, 0, 0, 0, 0, 0}}
pid = <optimized out>
tid = <optimized out>
ret = <optimized out>
#1 0x00007fabbd804801 in __GI_abort () at abort.c:79
save_stage = 1
act = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {
0 <repeats 12 times>, 67108868, 140375599380624, 16997243486433269248, 0}}, sa_flags = 1,
sa_restorer = 0x7fffdba08ab0}
sigs = {__val = {32, 0 <repeats 15 times>}}
__cnt = <optimized out>
__set = <optimized out>
__cnt = <optimized out>
__set = <optimized out>
#2 0x00005622b4cf85aa in OsAbort () at ../../../../os/utils.c:1361
No locals.
#3 0x00005622b4bd038c in ddxGiveUp (error=error@entry=EXIT_ERR_ABORT)
at ../../../../../../hw/xfree86/common/xf86Init.c:1051
i = <optimized out>
#4 0x00005622b4bd0446 in AbortDDX (error=error@entry=EXIT_ERR_ABORT)
at ../../../../../../hw/xfree86/common/xf86Init.c:1095
i = <optimized out>
#5 0x00005622b4cfe0a2 in AbortServer () at ../../../../os/log.c:874
No locals.
#6 0x00005622b4cfeee5 in FatalError (f=f@entry=0x5622b4d32970 "Caught signal %d (%s). Server aborting\n")
at ../../../../os/log.c:1015
args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffdba08ba0, reg_save_area = 0x7fffdba08ad0}}
args2 = {{gp_offset = 8, fp_offset = 48, overflow_arg_area = 0x7fffdba08ba0, reg_save_area = 0x7fffdba08ad0}}
beenhere = 1
#7 0x00005622b4cf569e in OsSigHandler (signo=11, sip=<optimized out>, unused=<optimized out>)
at ../../../../os/osinit.c:154
unused = <optimized out>
sip = <optimized out>
signo = 11
#8 <signal handler called>
No locals.
#9 __GI___libc_free (mem=0x80) at malloc.c:3103
ar_ptr = <optimized out>
p = <optimized out>
hook = 0x0
mem = 0x80
ar_ptr = <optimized out>
p = <optimized out>
hook = <optimized out>
__x = <optimized out>
ar_ptr = <optimized out>
p = <optimized out>
hook = 0x0
__x = <optimized out>
#10 0x00005622b4ba90c4 in xi2mask_free (mask=mask@entry=0x5622b68b0b80) at ../../../../dix/inpututils.c:1100
No locals.
#11 0x00005622b4ba60a4 in FreeGrab (pGrab=0x5622b68b0b10) at ../../../../dix/grabs.c:263
No locals.
#12 0x00005622b4c8910b in ProcXIUngrabDevice (client=0x5622b6f37ba0) at ../../../../Xi/xigrabdev.c:169
dev = 0x5622b6017700
grab = 0x5622b68b0b10
ret = 0
time = <optimized out>
stuff = <optimized out>
#13 0x00005622b4b8be98 in Dispatch () at ../../../../dix/dispatch.c:479
result = <optimized out>
client = <optimized out>
start_tick = 57610
#14 0x00005622b4b8fee0 in dix_main (argc=11, argv=0x7fffdba093c8, envp=<optimized out>) at ../../../../dix/main.c:287
i = <optimized out>
alwaysCheckForInput = {0, 1}
#15 0x00007fabbd7e5b97 in __libc_start_main (main=0x5622b4b79b50 <main>, argc=11, argv=0x7fffdba093c8,
init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffdba093b8)
at ../csu/libc-start.c:310
self = <optimized out>
__self = <optimized out>
result = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, -2770218526701926453, 94707060808544, 140736878121920, 0, 0,
-8487902057570121781, -8458842357984933941}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0,
0x7fabc02ef733 <_dl_init+259>, 0x7fabc02dd438}, data = {prev = 0x0, cleanup = 0x0,
canceltype = -1070663885}}}
not_first_call = <optimized out>
#16 0x00005622b4b79b8a in _start ()
No symbol table info available.
(gdb) thread apply all bt
Thread 2 (Thread 0x7fabb5d33700 (LWP 27993)):
#0 __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1 0x00007fabbdbbf098 in __GI___pthread_mutex_lock (mutex=mutex@entry=0x5622b4f8a100 <input_mutex>)
at ../nptl/pthread_mutex_lock.c:113
#2 0x00005622b4cf3780 in input_lock () at ../../../../os/inputthread.c:113
#3 0x00005622b4cf3a11 in InputReady (fd=22, xevents=1, data=0x5622b620ff50) at ../../../../os/inputthread.c:178
#4 0x00005622b4cf6121 in ospoll_wait (ospoll=0x5622b6022420, timeout=timeout@entry=-1)
at ../../../../os/ospoll.c:412
#5 0x00005622b4cf386e in InputThreadDoWork (arg=<optimized out>) at ../../../../os/inputthread.c:367
#6 0x00007fabbdbbc6db in start_thread (arg=0x7fabb5d33700) at pthread_create.c:463
#7 0x00007fabbd8e588f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 1 (Thread 0x7fabc04d9600 (LWP 27990)):
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1 0x00007fabbd804801 in __GI_abort () at abort.c:79
#2 0x00005622b4cf85aa in OsAbort () at ../../../../os/utils.c:1361
#3 0x00005622b4bd038c in ddxGiveUp (error=error@entry=EXIT_ERR_ABORT)
at ../../../../../../hw/xfree86/common/xf86Init.c:1051
#4 0x00005622b4bd0446 in AbortDDX (error=error@entry=EXIT_ERR_ABORT)
at ../../../../../../hw/xfree86/common/xf86Init.c:1095
#5 0x00005622b4cfe0a2 in AbortServer () at ../../../../os/log.c:874
#6 0x00005622b4cfeee5 in FatalError (f=f@entry=0x5622b4d32970 "Caught signal %d (%s). Server aborting\n")
at ../../../../os/log.c:1015
#7 0x00005622b4cf569e in OsSigHandler (signo=11, sip=<optimized out>, unused=<optimized out>)
at ../../../../os/osinit.c:154
#8 <signal handler called>
#9 __GI___libc_free (mem=0x80) at malloc.c:3103
#10 0x00005622b4ba90c4 in xi2mask_free (mask=mask@entry=0x5622b68b0b80) at ../../../../dix/inpututils.c:1100
#11 0x00005622b4ba60a4 in FreeGrab (pGrab=0x5622b68b0b10) at ../../../../dix/grabs.c:263
#12 0x00005622b4c8910b in ProcXIUngrabDevice (client=0x5622b6f37ba0) at ../../../../Xi/xigrabdev.c:169
#13 0x00005622b4b8be98 in Dispatch () at ../../../../dix/dispatch.c:479
#14 0x00005622b4b8fee0 in dix_main (argc=11, argv=0x7fffdba093c8, envp=<optimized out>) at ../../../../dix/main.c:287
#15 0x00007fabbd7e5b97 in __libc_start_main (main=0x5622b4b79b50 <main>, argc=11, argv=0x7fffdba093c8,
init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffdba093b8)
at ../csu/libc-start.c:310
#16 0x00005622b4b79b8a in _start ()
(gdb) quit
please let me know if you need any additional information
i dont mind reseaching further if pointed in the right direction