Bug#790825: vlc crashes when laptop is undocked

Sebastian Ramacher sramacher at debian.org
Sat Jul 4 13:48:15 UTC 2015


Control: reassign -1 libqt5widgets5 5.4.2+dfsg-4
Control: affects -1 vlc

On 2015-07-04 15:00:14, Michael Biebl wrote:
> Am 03.07.2015 um 09:32 schrieb Sebastian Ramacher:
> > Thanks. I think this is a Qt 5 issue. I am able to produce a similar backtrace
> > with the following example program [1]:
> 
> [example program]
> 
> > Can you confirm that this example also crashes for you?
> 
> Yes, this minimal program crashes as well when my system is undocked.
> For completeness sake, backtrace is attached.
> 
> So this looks like a Qt5 issue indeed. I don't remember seeing those
> crashes with Qt4, so this looks like a regression.

Thanks! I'm reassigning the bug to Qt 5.

Context for the Qt 5 maintainers: vlc and a very simple example program crash
after undocking a laptop from the docking station. See below for the backtrace
and the example program.

Backtrace:
> Starting program: /home/michael/bug/helloworld 
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
> [New Thread 0x7fffece58700 (LWP 3741)]
> 
> Program received signal SIGSEGV, Segmentation fault.
> QWidgetPrivate::drawWidget (this=this at entry=0x694320, pdev=pdev at entry=0x6d3eb0, rgn=..., offset=..., flags=flags at entry=4, 
>     sharedPainter=sharedPainter at entry=0x0, backingStore=0x6d8740) at kernel/qwidget.cpp:5552
> 5552	kernel/qwidget.cpp: Datei oder Verzeichnis nicht gefunden.
> #0  QWidgetPrivate::drawWidget (this=this at entry=0x694320, pdev=pdev at entry=0x6d3eb0, rgn=..., offset=..., flags=flags at entry=4, 
>     sharedPainter=sharedPainter at entry=0x0, backingStore=0x6d8740) at kernel/qwidget.cpp:5552
>         paintEngine = 0x69e4b0
>         grabbed = <optimized out>
>         asRoot = false
>         alsoOnScreen = false
>         toBePainted = {d = 0x6b0f30, static shared_empty = {ref = {atomic = {_q_value = -1}}, qt_rgn = 0x7ffff7734a00 <qrp>}}
>         onScreen = false
>         recursive = true
>         alsoInvisible = false
> #1  0x00007ffff78cecc1 in QWidgetPrivate::paintSiblingsRecursive (this=this at entry=0x6cf870, pdev=pdev at entry=0x6d3eb0, siblings=..., index=<optimized out>, 
>     rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x6d8740) at kernel/qwidget.cpp:5743
>         wRegion = {d = 0x6b0f30, static shared_empty = {ref = {atomic = {_q_value = -1}}, qt_rgn = 0x7ffff7734a00 <qrp>}}
>         w = <optimized out>
>         boundingRect = {x1 = <optimized out>, y1 = 0, x2 = <optimized out>, y2 = 201}
>         dirtyBoundingRect = false
>         exludeOpaqueChildren = false
>         excludeNativeChildren = false
>         widgetPos = {xp = 1, yp = 1}
>         hasMask = false
> #2  0x00007ffff78cdb07 in QWidgetPrivate::drawWidget (this=0x6cf870, pdev=0x6d3eb0, rgn=..., offset=..., flags=flags at entry=5, 
>     sharedPainter=sharedPainter at entry=0x0, backingStore=0x6d8740) at kernel/qwidget.cpp:5600
>         asRoot = true
>         alsoOnScreen = false
>         toBePainted = {d = 0x787250, static shared_empty = {ref = {atomic = {_q_value = -1}}, qt_rgn = 0x7ffff7734a00 <qrp>}}
>         onScreen = <optimized out>
>         recursive = true
>         alsoInvisible = false
> #3  0x00007ffff789e0bb in QWidgetBackingStore::doSync (this=this at entry=0x6d8740) at kernel/qwidgetbackingstore.cpp:1230
>         flags = 5
>         repaintAllWidgets = false
>         inTopLevelResize = <optimized out>
>         tlwRect = <optimized out>
>         surfaceGeometry = <optimized out>
>         dirtyCopy = {d = 0x698e90, static shared_empty = {ref = {atomic = {_q_value = -1}}, qt_rgn = 0x7ffff7734a00 <qrp>}}
>         updatesDisabled = <optimized out>
>         toClean = {d = 0x698e90, static shared_empty = {ref = {atomic = {_q_value = -1}}, qt_rgn = 0x7ffff7734a00 <qrp>}}
>         opaqueNonOverlappedWidgets = {a = 32, s = 0, ptr = 0x7fffffffcb10, {
>             array = "\000\000\000\000\000\000\000\000\020px\000\000\000\000\000\020px\000\000\000\000\000\020px\000\000\000\000\000\000\000\000\000\001\000\000\000\000\063P\244>\247\232\260`\337\377\377\377\177\000\000`\337\377\377\377\177\000\000\220\315\377\377\377\177\000\000\240\367a\000\000\000\000\000\001\004\000\000\000\000\000\000\240\337\377\377\377\177\000\000\005\000 \002\000\000\000\000\334\n\211\367\377\177\000\000`\337\377\377\377\177\000\000\220\315\377\377\377\177\000\000`\337\377\377\377\177\000\000\000\000\000\000\000\000\000\000\001\004\000\000\000\000\000\000\260_\211\367\377\177\000\000\000\000\000\000\000\000\000\000\067\311Q\367\377\177\000\000\240\367a\000\000\000\000\000\002\000\000\000\000\000\000\000 \322\377\377\377\177\000\000"..., 
>             q_for_alignment_1 = 0, q_for_alignment_2 = 0}}
>         beginPaintInfo = {wasFlushed = 0, nothingToPaint = 0, backingStoreRecreated = 0}
> #4  0x00007ffff789e459 in QWidgetBackingStore::sync (this=0x6d8740) at kernel/qwidgetbackingstore.cpp:1036
> No locals.
> #5  0x00007ffff78bf21f in QWidgetPrivate::syncBackingStore (this=0x6cf870) at kernel/qwidget.cpp:1894
> No locals.
> #6  0x00007ffff78d4218 in QWidget::event (this=this at entry=0x7fffffffdf60, event=event at entry=0x7fffffffd060) at kernel/qwidget.cpp:8962
> No locals.
> #7  0x00007ffff79d273e in QFrame::event (this=this at entry=0x7fffffffdf60, e=e at entry=0x7fffffffd060) at widgets/qframe.cpp:526
>         result = <optimized out>
> #8  0x00007ffff7a5c333 in QAbstractScrollArea::event (this=0x7fffffffdf60, e=0x7fffffffd060) at widgets/qabstractscrollarea.cpp:1142
> No locals.
> #9  0x00007ffff7890adc in QApplicationPrivate::notify_helper (this=this at entry=0x61f7a0, receiver=receiver at entry=0x7fffffffdf60, e=e at entry=0x7fffffffd060)
>     at kernel/qapplication.cpp:3720
>         consumed = <optimized out>
> #10 0x00007ffff7895fb0 in QApplication::notify (this=0x7fffffffdfa0, receiver=0x7fffffffdf60, e=0x7fffffffd060) at kernel/qapplication.cpp:3503
>         w = 0x7fffffffdf60
>         extra = <optimized out>
>         isProxyWidget = <optimized out>
>         res = <optimized out>
> #11 0x00007ffff6fa33ab in QCoreApplication::notifyInternal (this=0x7fffffffdfa0, receiver=receiver at entry=0x7fffffffdf60, event=event at entry=0x7fffffffd060)
>     at kernel/qcoreapplication.cpp:935
>         threadData = 0x61f910
>         loopLevelCounter = {threadData = 0x61f910}
>         result = false
>         cbdata = {0x7fffffffdf60, 0x7fffffffd060, 0x7fffffffd00f}
>         d = <optimized out>
> #12 0x00007ffff789f51f in sendEvent (event=0x7fffffffd060, receiver=0x7fffffffdf60) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:228
> No locals.
> #13 QWidgetBackingStore::sendUpdateRequest (this=<optimized out>, widget=0x7fffffffdf60, updateTime=<optimized out>) at kernel/qwidgetbackingstore.cpp:456
>         event = {_vptr.QEvent = 0x7ffff71ddc70 <vtable for QEvent+16>, static staticMetaObject = {d = {superdata = 0x0, 
>               stringdata = 0x7ffff716a140 <qt_meta_stringdata_QEvent>, data = 0x7ffff7169b80 <qt_meta_data_QEvent>, static_metacall = 0x0, 
>               relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x0, t = 77, posted = 0, spont = 0, m_accept = 1, reserved = 13}
> #14 0x00007ffff78a010d in QWidgetBackingStore::markDirty (this=0x6d8740, rect=..., widget=<optimized out>, 
>     updateTime=updateTime at entry=QWidgetBackingStore::UpdateNow, bufferState=bufferState at entry=QWidgetBackingStore::BufferInvalid)
>     at kernel/qwidgetbackingstore.cpp:639
>         widgetRect = {x1 = 0, y1 = 0, x2 = 201, y2 = 201}
>         translatedRect = {x1 = 0, y1 = 0, x2 = 201, y2 = 201}
> #15 0x00007ffff78ebde4 in QWidgetWindow::repaintWindow (this=0x69e030) at kernel/qwidgetwindow.cpp:648
>         this = 0x69e030
> #16 0x00007ffff6fd412e in QMetaObject::activate (sender=sender at entry=0x69e030, signalOffset=<optimized out>, local_signal_index=local_signal_index at entry=0, 
>     argv=argv at entry=0x7fffffffd2d0) at kernel/qobject.cpp:3717
>         receiverInSameThread = <optimized out>
>         sw = {receiver = 0x69e030, previousSender = 0x7fffffffd4b0, currentSender = {sender = 0x69e030, signal = 3, ref = 1}, switched = true}
>         callFunction = 0x7ffff7c3df70 <QWidgetWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>
>         receiver = 0x69e030
>         method_relative = 1
>         c = 0x695c50
>         last = 0x695c50
>         locker = {val = 140737339357136}
>         connectionLists = {connectionLists = 0x69a180}
>         list = <optimized out>
>         signal_index = 3
>         empty_argv = {0x0}
>         currentThreadId = 0x7ffff7fb7780
> #17 0x00007ffff6fd47a7 in QMetaObject::activate (sender=sender at entry=0x69e030, m=m at entry=0x7ffff771fbc0 <QWindow::staticMetaObject>, 
>     local_signal_index=local_signal_index at entry=0, argv=argv at entry=0x7fffffffd2d0) at kernel/qobject.cpp:3582
> No locals.
> #18 0x00007ffff72d7c2f in QWindow::screenChanged (this=this at entry=0x69e030, _t1=_t1 at entry=0x0) at .moc/moc_qwindow.cpp:626
>         _a = {0x0, 0x7fffffffd2c8}
> #19 0x00007ffff72d8485 in QWindowPrivate::emitScreenChangedRecursion (this=this at entry=0x6b6a90, newScreen=newScreen at entry=0x0) at kernel/qwindow.cpp:366
> No locals.
> #20 0x00007ffff72dbbb3 in QWindowPrivate::setTopLevelScreen (this=0x6b6a90, newScreen=0x0, recreate=<optimized out>) at kernel/qwindow.cpp:387
>         shouldRecreate = <optimized out>
> #21 0x00007ffff72dbd55 in QWindow::screenDestroyed (this=0x69e030, object=<optimized out>) at kernel/qwindow.cpp:1720
>         wasVisible = true
> #22 0x00007ffff6fd3aba in call (a=0x7fffffffd520, r=0x69e030, this=0x6952d0) at ../../include/QtCore/../../src/corelib/kernel/qobject_impl.h:124
> No locals.
> #23 QMetaObject::activate (sender=sender at entry=0x639ee0, signalOffset=<optimized out>, local_signal_index=local_signal_index at entry=0, 
>     argv=argv at entry=0x7fffffffd520) at kernel/qobject.cpp:3702
>         obj = {d = 0x6952d0}
>         receiverInSameThread = <optimized out>
>         sw = {receiver = 0x69e030, previousSender = 0x0, currentSender = {sender = 0x639ee0, signal = 0, ref = 1}, switched = true}
>         callFunction = <optimized out>
>         receiver = 0x69e030
>         method_relative = 0
>         c = 0x693ba0
>         last = 0x698840
>         locker = {val = 140737339356968}
>         connectionLists = {connectionLists = 0x69a150}
>         list = <optimized out>
>         signal_index = 0
>         empty_argv = {0x0}
>         currentThreadId = 0x7ffff7fb7780
> #24 0x00007ffff6fd47a7 in QMetaObject::activate (sender=sender at entry=0x639ee0, m=m at entry=0x7ffff71d9980 <QObject::staticMetaObject>, 
>     local_signal_index=local_signal_index at entry=0, argv=argv at entry=0x7fffffffd520) at kernel/qobject.cpp:3582
> No locals.
> #25 0x00007ffff6fd484f in QObject::destroyed (this=this at entry=0x639ee0, _t1=_t1 at entry=0x639ee0) at .moc/moc_qobject.cpp:206
>         _a = {0x0, 0x7fffffffd518}
> #26 0x00007ffff6fdd1bb in QObject::~QObject (this=0x639ee0, __in_chrg=<optimized out>) at kernel/qobject.cpp:903
>         d = 0x639f00
> #27 0x00007ffff72fa589 in QScreen::~QScreen (this=0x639ee0, __in_chrg=<optimized out>) at kernel/qscreen.cpp:77
> No locals.
> #28 0x00007ffff72c0e2a in QPlatformScreen::~QPlatformScreen (this=0x63a4c0, __in_chrg=<optimized out>) at kernel/qplatformscreen.cpp:57
> No locals.
> #29 0x00007ffff7f32179 in QXcbScreen::~QXcbScreen (this=0x63a4c0, __in_chrg=<optimized out>) at qxcbscreen.cpp:222
> No locals.
> #30 0x00007ffff7f24fbb in QXcbConnection::updateScreens (this=this at entry=0x62c100) at qxcbconnection.cpp:286
>         i = 0
>         activeScreens = {q_hash = {{d = 0x6d78e0, e = 0x6d78e0}}}
>         it = {data = 0x62db84, rem = 0, index = 864}
>         screenNumber = <optimized out>
>         xcbScreenNumber = <optimized out>
>         newScreens = {<QListSpecialMethods<QXcbScreen*>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = -1}}, alloc = 0, 
>                 begin = 0, end = 0, array = {0x0}}, d = 0x6d7820}, d = 0x6d7820}}
>         primaryScreen = <optimized out>
> #31 0x00007ffff7f25c8d in QXcbConnection::handleXcbEvent (this=this at entry=0x62c100, event=event at entry=0x7fffe8003e60) at qxcbconnection.cpp:961
>         change_event = <optimized out>
>         result = 0
>         dispatcher = 0x64e2a0
>         handled = false
>         response_type = 89
> #32 0x00007ffff7f26ecb in QXcbConnection::processXcbEvents (this=0x62c100) at qxcbconnection.cpp:1303
>         accepted = false
>         it = 0x7ffff707a430 <qt_array+48>
>         event = 0x7fffe8003e60
>         eventGuard = {d = 0x7fffe8003e60}
>         response_type = <optimized out>
>         i = 0
>         connection_error = <optimized out>
>         eventqueue = 0x637d98
> #33 0x00007ffff6fd4e8a in QObject::event (this=0x62c100, e=<optimized out>) at kernel/qobject.cpp:1245
>         mce = <optimized out>
>         sw = {receiver = 0x62c100, previousSender = 0x0, currentSender = {sender = 0x637d80, signal = 5, ref = 1}, switched = true}
> #34 0x00007ffff7890adc in QApplicationPrivate::notify_helper (this=this at entry=0x61f7a0, receiver=receiver at entry=0x62c100, e=e at entry=0x7fffe8003fb0)
>     at kernel/qapplication.cpp:3720
>         consumed = <optimized out>
> #35 0x00007ffff7895fb0 in QApplication::notify (this=0x7fffffffdfa0, receiver=0x62c100, e=0x7fffe8003fb0) at kernel/qapplication.cpp:3503
>         w = 0x62c100
>         extra = <optimized out>
>         isProxyWidget = <optimized out>
>         res = <optimized out>
> #36 0x00007ffff6fa33ab in QCoreApplication::notifyInternal (this=0x7fffffffdfa0, receiver=0x62c100, event=event at entry=0x7fffe8003fb0)
>     at kernel/qcoreapplication.cpp:935
>         threadData = 0x61f910
>         loopLevelCounter = {threadData = 0x61f910}
>         result = false
>         cbdata = {0x62c100, 0x7fffe8003fb0, 0x7fffffffdbff}
>         d = <optimized out>
> #37 0x00007ffff6fa541b in sendEvent (event=0x7fffe8003fb0, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:228
> No locals.
> #38 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver at entry=0x0, event_type=event_type at entry=0, data=0x61f910)
>     at kernel/qcoreapplication.cpp:1552
>         e = 0x7fffe8003fb0
>         pe = <optimized out>
>         r = <optimized out>
>         unlocker = {m = <synthetic pointer>}
>         event_deleter = {d = 0x7fffe8003fb0}
>         locker = {val = 6420792}
>         startOffset = 0
>         i = @0x61f92c: 1
>         cleanup = {receiver = 0x0, event_type = 0, data = 0x61f910, exceptionCaught = true}
> #39 0x00007ffff6fa5a18 in QCoreApplication::sendPostedEvents (receiver=receiver at entry=0x0, event_type=event_type at entry=0)
>     at kernel/qcoreapplication.cpp:1410
>         data = <optimized out>
> #40 0x00007ffff6ffbf33 in postEventSourceDispatch (s=0x64e300) at kernel/qeventdispatcher_glib.cpp:271
>         source = 0x64e300
> #41 0x00007ffff5a0fc3d in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
> No symbol table info available.
> #42 0x00007ffff5a0ff20 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
> No symbol table info available.
> #43 0x00007ffff5a0ffcc in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
> No symbol table info available.
> #44 0x00007ffff6ffc347 in QEventDispatcherGlib::processEvents (this=0x64e2a0, flags=...) at kernel/qeventdispatcher_glib.cpp:418
>         d = 0x64abe0
>         canWait = true
>         savedFlags = {i = 0}
>         result = <optimized out>
> #45 0x00007ffff6fa0b62 in QEventLoop::exec (this=this at entry=0x7fffffffdee0, flags=..., flags at entry=...) at kernel/qeventloop.cpp:204
>         locker = {val = 6420992}
>         ref = {d = 0x69bf30, locker = @0x7fffffffde60, exceptionCaught = true}
>         d = 0x69bf30
> #46 0x00007ffff6fa87ac in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1188
>         threadData = 0x61f910
>         eventLoop = {<QObject> = {_vptr.QObject = 0x7ffff71e1150 <vtable for QEventLoop+16>, static staticMetaObject = {d = {superdata = 0x0, 
>                 stringdata = 0x7ffff710dc80 <qt_meta_stringdata_QObject>, data = 0x7ffff710db40 <qt_meta_data_QObject>, 
>                 static_metacall = 0x7ffff6fdd430 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, 
>                 extradata = 0x0}}, d_ptr = {d = 0x69bf30}, static staticQtMetaObject = {d = {superdata = 0x0, 
>                 stringdata = 0x7ffff7155780 <qt_meta_stringdata_Qt>, data = 0x7ffff7152f00 <qt_meta_data_Qt>, static_metacall = 0x0, 
>                 relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7ffff71d9980 <QObject::staticMetaObject>, 
>               stringdata = 0x7ffff7169740 <qt_meta_stringdata_QEventLoop>, data = 0x7ffff71696c0 <qt_meta_data_QEventLoop>, 
>               static_metacall = 0x7ffff7053550 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, 
>               extradata = 0x0}}}
>         returnCode = <optimized out>
> #47 0x0000000000401361 in main ()
> No symbol table info available.
> A debugging session is active.
> 
> 	Inferior 1 [process 3731] will be killed.
> 
> Quit anyway? (y or n) 

Example program:
> $ cat main.cpp
> #include <QApplication>
> #include <QGraphicsScene>
> #include <QGraphicsView>
> 
> int main(int argc, char** argv)
> {
>   QApplication app(argc, argv);
> 
>   QGraphicsScene scene;
>   scene.setSceneRect(-100.0, -100.0, 200.0, 200.0);
>   scene.addText("Hello, world!");
> 
>   QGraphicsView view(&scene);
>   view.setRenderHints(QPainter::Antialiasing);
>   view.show();
> 
>   return app.exec();
> }
> 
> $ cat CMakeLists.txt
> cmake_minimum_required(VERSION 2.8.11)
> project(testproject)
> 
> set(CMAKE_INCLUDE_CURRENT_DIR ON)
> set(CMAKE_AUTOMOC ON)
> 
> find_package(Qt5Widgets)
> 
> add_executable(helloworld main.cpp)
> target_link_libraries(helloworld Qt5::Widgets)

Cheers
-- 
Sebastian Ramacher
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/pkg-multimedia-maintainers/attachments/20150704/8d06d298/attachment-0001.sig>


More information about the pkg-multimedia-maintainers mailing list