Crash in oxide::qt::GetWebScreenInfoFromQScreen()

Bug #1524984 reported by Olivier Tilloy
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Oxide
Triaged
High
Unassigned

Bug Description

I can reliably reproduce this crash with oxide 1.11.3 on my x86-64 laptop, by launching webbrowser-app, then plugging in an external monitor (my monitor config then blanks the laptop screen and all windows are moved to the external monitor). Here is the complete stack trace:

#0 QScreen::depth (this=this@entry=0x0) at kernel/qscreen.cpp:108
#1 0x00007f52181ac408 in oxide::qt::GetWebScreenInfoFromQScreen (screen=0x0) at ../../../../qt/core/browser/oxide_qt_screen_utils.cc:102
#2 0x00007f52181bc490 in oxide::qt::WebView::GetScreenInfo (this=<optimized out>) at ../../../../qt/core/browser/oxide_qt_web_view.cc:533
#3 0x00007f52181f48c1 in oxide::WebView::GetScreenInfo (this=<optimized out>) at ../../../../shared/browser/oxide_web_view.cc:1798
#4 0x00007f52181e658d in oxide::RenderWidgetHostView::GetScreenInfo (this=<optimized out>, result=0x55a754c15590)
    at ../../../../shared/browser/oxide_render_widget_host_view.cc:363
#5 0x00007f52184da186 in content::RenderWidgetHostImpl::GetWebScreenInfo (this=0x55a758384f88, result=0x55a754c15590)
    at ../../../../third_party/chromium/src/content/browser/renderer_host/render_widget_host_impl.cc:1224
#6 0x00007f52184db125 in content::RenderWidgetHostImpl::GetResizeParams (this=this@entry=0x55a758384f88,
    resize_params=resize_params@entry=0x55a754c15590)
    at ../../../../third_party/chromium/src/content/browser/renderer_host/render_widget_host_impl.cc:581
#7 0x00007f52184db6c4 in content::RenderWidgetHostImpl::WasResized (this=0x55a758384f88)
    at ../../../../third_party/chromium/src/content/browser/renderer_host/render_widget_host_impl.cc:644
#8 0x00007f52288dde2a in OxideQQuickWebViewPrivate::screenChanged(QScreen*) () from /usr/lib/x86_64-linux-gnu/libOxideQtQuick.so.0
#9 0x00007f52288e2c25 in OxideQQuickWebView::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
   from /usr/lib/x86_64-linux-gnu/libOxideQtQuick.so.0
#10 0x00007f5253ede78a in QMetaObject::activate (sender=sender@entry=0x55a755270fc0, signalOffset=<optimized out>,
    local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe51c8f640) at kernel/qobject.cpp:3717
#11 0x00007f5253edef87 in QMetaObject::activate (sender=sender@entry=0x55a755270fc0, m=m@entry=0x7f525460e580 <QWindow::staticMetaObject>,
    local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe51c8f640) at kernel/qobject.cpp:3582
#12 0x00007f52541d3dbf in QWindow::screenChanged (this=this@entry=0x55a755270fc0, _t1=_t1@entry=0x0) at .moc/moc_qwindow.cpp:626
#13 0x00007f52541d4cb5 in QWindowPrivate::emitScreenChangedRecursion (this=this@entry=0x55a755274e70, newScreen=newScreen@entry=0x0)
    at kernel/qwindow.cpp:366
#14 0x00007f52541d7cf3 in QWindowPrivate::setTopLevelScreen (this=0x55a755274e70, newScreen=0x0, recreate=<optimized out>)
    at kernel/qwindow.cpp:387
#15 0x00007f52541d7e85 in QWindow::screenDestroyed (this=0x55a755270fc0, object=<optimized out>) at kernel/qwindow.cpp:1720
#16 0x00007f5253ede617 in QtPrivate::QSlotObjectBase::call (a=0x7ffe51c8f890, r=0x55a755270fc0, this=<optimized out>)
    at ../../include/QtCore/../../src/corelib/kernel/qobject_impl.h:124
#17 QMetaObject::activate (sender=sender@entry=0x55a754c15f20, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=0,
    argv=argv@entry=0x7ffe51c8f890) at kernel/qobject.cpp:3702
#18 0x00007f5253edef87 in QMetaObject::activate (sender=sender@entry=0x55a754c15f20, m=m@entry=0x7f52540db0e0 <QObject::staticMetaObject>,
    local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe51c8f890) at kernel/qobject.cpp:3582
#19 0x00007f5253edf02f in QObject::destroyed (this=this@entry=0x55a754c15f20, _t1=_t1@entry=0x55a754c15f20) at .moc/moc_qobject.cpp:206
#20 0x00007f5253ee619a in QObject::~QObject (this=0x55a754c15f20, __in_chrg=<optimized out>) at kernel/qobject.cpp:903
#21 0x00007f52541f60c9 in QScreen::~QScreen (this=0x55a754c15f20, __in_chrg=<optimized out>) at kernel/qscreen.cpp:77
#22 0x00007f52541bdd49 in QPlatformScreen::~QPlatformScreen (this=0x55a754c16290, __in_chrg=<optimized out>)
    at kernel/qplatformscreen.cpp:57
#23 0x00007f524c008519 in QXcbScreen::~QXcbScreen (this=0x55a754c16290, __in_chrg=<optimized out>) at qxcbscreen.cpp:222
#24 0x00007f524bffb909 in QXcbConnection::updateScreens (this=this@entry=0x55a754c07b50) at qxcbconnection.cpp:286
#25 0x00007f524bffc5c6 in QXcbConnection::handleXcbEvent (this=this@entry=0x55a754c07b50, event=event@entry=0x7f5244003a60)
    at qxcbconnection.cpp:961
#26 0x00007f524bffd3b3 in QXcbConnection::processXcbEvents (this=0x55a754c07b50) at qxcbconnection.cpp:1303
#27 0x00007f5253edf651 in QObject::event (this=0x55a754c07b50, e=<optimized out>) at kernel/qobject.cpp:1245
#28 0x00007f5254f60b8c in QApplicationPrivate::notify_helper (this=this@entry=0x55a754bf8ce0, receiver=receiver@entry=0x55a754c07b50,
    e=e@entry=0x7f5244003c70) at kernel/qapplication.cpp:3720
#29 0x00007f5254f66230 in QApplication::notify (this=0x7ffe51c90300, receiver=0x55a754c07b50, e=0x7f5244003c70)
    at kernel/qapplication.cpp:3503
#30 0x00007f5253eadf1b in QCoreApplication::notifyInternal (this=0x7ffe51c90300, receiver=0x55a754c07b50, event=event@entry=0x7f5244003c70)
    at kernel/qcoreapplication.cpp:935
#31 0x00007f5253eb0057 in QCoreApplication::sendEvent (event=0x7f5244003c70, receiver=<optimized out>)
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:228
#32 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x55a754bf8e50)
    at kernel/qcoreapplication.cpp:1552
#33 0x00007f5253eb0588 in QCoreApplication::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0)
    at kernel/qcoreapplication.cpp:1410
#34 0x00007f5253f04e73 in postEventSourceDispatch (s=0x55a754d0ed50) at kernel/qeventdispatcher_glib.cpp:271
#35 0x00007f525288aff7 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#36 0x00007f525288b250 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#37 0x00007f525288b2fc in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#38 0x00007f5253f0529b in QEventDispatcherGlib::processEvents (this=0x55a754cf1700, flags=...) at kernel/qeventdispatcher_glib.cpp:420
#39 0x00007f5253eab75a in QEventLoop::exec (this=this@entry=0x7ffe51c90250, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#40 0x00007f5253eb32cc in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1188
#41 0x000055a7545ecd16 in BrowserApplication::run() ()
#42 0x000055a7545e15d5 in main ()

oxide::qt::GetWebScreenInfoFromQScreen() is calling QScreen::depth() on a null pointer.

Changed in oxide:
importance: Undecided → High
status: New → Triaged
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.