[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: