Bug#790825: Bug#807528: vlc: after some time, clicks on the root window no longer work
Control: retitle 807528 after screen and/or USB mouse is disconnected, crash and/or broken clicks on the root window
Control: reassign 807528 libqt5widgets5
Control: forcemerge 790825 807528
On 2015-12-10 11:43:42 +0100, Sebastian Ramacher wrote:
> On 2015-12-10 11:31:47, Vincent Lefevre wrote:
> > On 2015-12-10 10:34:01 +0100, Sebastian Ramacher wrote:
> > > Are you that this is a bug in vlc and not Qt 5, your window manager
> > > or X.Org?
> >
> > I don't know. I'm on another machine, and the problem is reproducible
> > on it. Since the mouse is attached on the USB hub of the screen, I can
> > do this either by unplugging the mouse USB cable or by switching off
> > the screen and back on. In the latter case, if I do this while the
> > VLC window isn't visible (I'm on another desktop page) and go to the
> > VLC page again, the VLC window contains garbage, and if I click on it,
> > VLC crashes (segmentation fault) in QXcbScreen::mapFromNative in
> > libQt5XcbQpa.so.5.5.1 (I can give more details later). Should I report
> > a new bug for this?
>
> This sound very similar to #790825. Are you able to reproduce the
> issues with the test program posted there?
Yes, both the mouse click and the segfault issues. I'm merging the bugs.
Core was generated by `./helloworld'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 QXcbScreen::mapFromNative (this=0x0, pos=...) at qxcbscreen.cpp:249
249 qxcbscreen.cpp: No such file or directory.
[Current thread is 1 (Thread 0x7f9aa1667780 (LWP 26892))]
Backtrace is attached.
To reproduce the crash:
1. Run ./helloworld
2. Move to another desktop page (my window manager: fvwm).
3. Switch off the screen and switch it on again.
4. Move to the initial desktop page. At this point, the redraw of the
helloworld window is not done (there is garbage from the previous
desktop page).
5. Click on the helloworld window. This makes the program crash.
When I run the program under valgrind, I don't get a crash when I click
on the window. The only problem is that the redraw is not done (4). And
if I move to another desktop page then back, the redraw is done.
> In any case, please provide the vlc logs and install vlc-dbg and
> qtbase5-dbg and attach the backtrace.
I think that the backtrace on the minimal program should be sufficient.
Or should I provide VLC information too?
--
Vincent Lefèvre <vincent@vinc17.net> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)
Thread 2 (Thread 0x7f9a8ece7700 (LWP 26893)):
#0 0x00007f9a9f87486d in poll () at ../sysdeps/unix/syscall-template.S:81
No locals.
#1 0x00007f9a9cea7382 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
No symbol table info available.
#2 0x00007f9a9cea8ff7 in xcb_wait_for_event () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
No symbol table info available.
#3 0x00007f9aa1597569 in QXcbEventReader::run (this=0x101e5f0) at qxcbconnection.cpp:1229
event = <optimized out>
#4 0x00007f9aa047387e in QThreadPrivate::start (arg=0x101e5f0) at thread/qthread_unix.cpp:331
__clframe = {__cancel_routine = 0x7f9aa04729b0 <QThreadPrivate::finish(void*)>, __cancel_arg = 0x101e5f0, __do_it = 1, __cancel_type = <optimized out>}
thr = 0x101e5f0
data = 0x101e380
objectName = {static null = {<No data fields>}, d = 0x7f9aa0728260 <QArrayData::shared_null>}
#5 0x00007f9a9f57f284 in start_thread (arg=0x7f9a8ece7700) at pthread_create.c:333
__res = <optimized out>
pd = 0x7f9a8ece7700
now = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140301797586688, -6731110702678962631, 0, 140722247518847, 7, 140301797586688, 6747333313347554873, 6747365126827380281}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
pagesize_m1 = <optimized out>
sp = <optimized out>
freesize = <optimized out>
__PRETTY_FUNCTION__ = "start_thread"
#6 0x00007f9a9f87d13d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
No locals.
Thread 1 (Thread 0x7f9aa1667780 (LWP 26892)):
#0 QXcbScreen::mapFromNative (this=0x0, pos=...) at qxcbscreen.cpp:249
dpr = <optimized out>
#1 0x00007f9aa15af79d in QXcbWindow::handleButtonPressEvent (this=this@entry=0x10db940, event_x=event_x@entry=128, event_y=event_y@entry=70, root_x=root_x@entry=730, root_y=root_y@entry=898, detail=1, modifiers=..., timestamp=263374363) at qxcbwindow.cpp:2155
isWheel = false
dpr = <optimized out>
local = {xp = 128, yp = 70}
global = {xp = 1, yp = 0}
#2 0x00007f9aa15afd11 in QXcbWindow::handleXIMouseEvent (this=0x10db940, event=0x7f9a88003c70) at qxcbwindow.cpp:2254
modifiers = <optimized out>
button = Qt::LeftButton
#3 0x00007f9aa15c3665 in QXcbConnection::xi2HandleEvent (this=this@entry=0x1009d40, event=event@entry=0x7f9a88003c70) at qxcbconnection_xi2.cpp:520
xiEvent = 0x7f9a88003c70
sourceDeviceId = 8
xiDeviceEvent = 0x7f9a88003c70
device = {i = 0x10cba30}
eventListener = 0x10db940
#4 0x00007f9aa159b8e5 in QXcbConnection::handleXcbEvent (this=this@entry=0x1009d40, event=event@entry=0x7f9a88003c70) at qxcbconnection.cpp:1119
result = 0
dispatcher = <optimized out>
handled = false
response_type = 35
#5 0x00007f9aa159bd83 in QXcbConnection::processXcbEvents (this=0x1009d40) at qxcbconnection.cpp:1502
accepted = false
it = 0x7f9aa0728230 <qt_array+48>
event = 0x7f9a88003c70
eventGuard = {d = 0x7f9a88003c70}
response_type = <optimized out>
i = <optimized out>
connection_error = <optimized out>
eventqueue = 0x101e608
#6 0x00007f9aa0684601 in QObject::event (this=0x1009d40, e=<optimized out>) at kernel/qobject.cpp:1239
mce = <optimized out>
sw = {receiver = 0x1009d40, previousSender = 0x0, currentSender = {sender = 0x101e5f0, signal = 5, ref = 1}, switched = true}
#7 0x00007f9aa0f48ffc in QApplicationPrivate::notify_helper (this=this@entry=0xffb600, receiver=receiver@entry=0x1009d40, e=e@entry=0x7f9a88003840) at kernel/qapplication.cpp:3716
consumed = <optimized out>
#8 0x00007f9aa0f4e4c6 in QApplication::notify (this=0x7ffc73935150, receiver=0x1009d40, e=0x7f9a88003840) at kernel/qapplication.cpp:3499
w = 0x1009d40
extra = <optimized out>
isProxyWidget = <optimized out>
res = false
#9 0x00007f9aa0654bcb in QCoreApplication::notifyInternal (this=0x7ffc73935150, receiver=0x1009d40, event=event@entry=0x7f9a88003840) at kernel/qcoreapplication.cpp:965
result = false
cbdata = {0x1009d40, 0x7f9a88003840, 0x7ffc73934daf}
d = <optimized out>
threadData = 0xffb770
loopLevelCounter = {threadData = 0xffb770}
#10 0x00007f9aa0656fc6 in QCoreApplication::sendEvent (event=0x7f9a88003840, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:224
No locals.
#11 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0xffb770) at kernel/qcoreapplication.cpp:1593
e = 0x7f9a88003840
pe = <optimized out>
r = <optimized out>
unlocker = {m = <synthetic pointer>}
event_deleter = {d = 0x7f9a88003840}
locker = {val = 16758680}
startOffset = 0
i = @0xffb78c: 1
cleanup = {receiver = 0x0, event_type = 0, data = 0xffb770, exceptionCaught = true}
#12 0x00007f9aa06574a8 in QCoreApplication::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0) at kernel/qcoreapplication.cpp:1451
data = <optimized out>
#13 0x00007f9aa06aaf73 in postEventSourceDispatch (s=0x1041120) at kernel/qeventdispatcher_glib.cpp:271
source = 0x1041120
#14 0x00007f9a9f05ffe7 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#15 0x00007f9a9f060240 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#16 0x00007f9a9f0602ec in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#17 0x00007f9aa06ab37f in QEventDispatcherGlib::processEvents (this=0x10422a0, flags=...) at kernel/qeventdispatcher_glib.cpp:418
d = 0x10422c0
canWait = true
savedFlags = {i = 0}
result = <optimized out>
#18 0x00007f9aa065235a in QEventLoop::exec (this=this@entry=0x7ffc73935090, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
d = 0x10bbfd0
locker = {val = 16758880}
ref = {d = 0x10bbfd0, locker = @0x7ffc73935010, exceptionCaught = true}
#19 0x00007f9aa065a43c in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1229
threadData = 0xffb770
eventLoop = {<QObject> = {_vptr.QObject = 0x7f9aa089e498 <vtable for QEventLoop+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f9aa07c82c0 <qt_meta_stringdata_QObject>, data = 0x7f9aa07c81a0 <qt_meta_data_QObject>, static_metacall = 0x7f9aa068b8e0 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x10bbfd0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7f9aa0810000 <qt_meta_stringdata_Qt>, data = 0x7f9aa080d600 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7f9aa0895b00 <QObject::staticMetaObject>, stringdata = 0x7f9aa0824fc0 <qt_meta_stringdata_QEventLoop>, data = 0x7f9aa0824f60 <qt_meta_data_QEventLoop>, static_metacall = 0x7f9aa0702970 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}
returnCode = <optimized out>
#20 0x000000000040131a in main ()
No symbol table info available.
Reply to: