Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-63945

QtWebEngine causing crash on exit

    XMLWordPrintable

Details

    • Bug
    • Resolution: Invalid
    • P2: Important
    • None
    • 5.8.0, 5.9.3
    • WebEngine
    • None
    • macOS 10.12
      Qt 5.9.3
      Creator 4.5-ish (between rc1 and release) 8bc3ac9177e6f8f05c2c64a400d244a5cc82aa0a

    Description

      Below is a backtrace of the kind of crash I've been seeing on exit (on Mac), in applications that use QWE to view QtHelp documentation. Here it's the latest QtCreator, but a similar crash happens in KDevelop (they're not systematic).

       

      I'm not sure it's related, but I find that this latest Qt Creator build doesn't exit when I use the Quit menu command. The main window closes, but the help viewer window remains open and I have to repeat to Quit command several times.

      The actual bug is a failure to verify that d->focus_next is still valid (the underlying reason may be a QWidget* that is being deleted twice).

       

      Application: Qt Creator (Qt Creator), signal: Segmentation fault: 11
      (lldb) process attach --pid 72134
      Process 72134 stopped
      Executable module set to "/Applications/MacPorts/Qt5/Qt-Creator.app/Contents/MacOS/Qt Creator".
      Architecture set to: x86_64-apple-macosx.
      (lldb) set term-width 200
      (lldb) thread info
      thread #1: tid = 0x2bd700d, 0x00007fff8fb78e20 libsystem_kernel.dylib`__wait4 + 8, name = 'CrBrowserMain', queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
      
      (lldb) bt all
      * thread #1: tid = 0x2bd700d, 0x00007fff8fb78e20 libsystem_kernel.dylib`__wait4 + 8, name = 'CrBrowserMain', queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
      * frame #0: 0x00007fff8fb78e20 libsystem_kernel.dylib`__wait4 + 8
      frame #1: 0x0000000110da4cde libKF5Crash.5.dylib`KCrash::startProcess(int, char const**, bool) [inlined] startProcessInternal(argc=<unavailable>, directly=<unavailable>) + 125 at kcrash.cpp:651
      frame #2: 0x0000000110da4c61 libKF5Crash.5.dylib`KCrash::startProcess(argc=<unavailable>, argv=<unavailable>, waitAndExit=<unavailable>) + 17 at kcrash.cpp:633
      frame #3: 0x0000000110da4aa5 libKF5Crash.5.dylib`KCrash::defaultCrashHandler(sig=11) + 1061 at kcrash.cpp:530
      frame #4: 0x00007fff929405aa libsystem_platform.dylib`_sigtramp + 26
      frame #5: 0x00000001067a6561 QtWidgets`QWidget::~QWidget() [inlined] QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::data() const + 1 at qscopedpointer.h:140
      frame #6: 0x00000001067a6560 QtWidgets`QWidget::~QWidget() [inlined] QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::pointer qGetPtrHelper<QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> > >(QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> > const&) at qglobal.h:971
      frame #7: 0x00000001067a6560 QtWidgets`QWidget::~QWidget() [inlined] QWidget::d_func(this=0x0000000000000000) at qwidget.h:131
      frame #8: 0x00000001067a6560 QtWidgets`QWidget::~QWidget(this=0x00007fe7e8a4b9d0) + 464 at qwidget.cpp:1602
      frame #9: 0x00000001067a703e QtWidgets`QWidget::~QWidget() [inlined] QWidget::~QWidget(this=0x00007fe7e8a4b9d0) + 14 at qwidget.cpp:1556
      frame #10: 0x00000001067a7039 QtWidgets`QWidget::~QWidget(this=0x00007fe7e8a4b9d0) + 9 at qwidget.cpp:1556
      frame #11: 0x000000010778f878 QtCore`QObject::event(QEvent*) [inlined] qDeleteInEventHandler(o=0x00007fe7e8a4b9d0) + 14 at qobject.cpp:4557
      frame #12: 0x000000010778f86a QtCore`QObject::event(this=0x00007fe7e8a4b9d0, e=<unavailable>) + 826 at qobject.cpp:1254
      frame #13: 0x00000001067b7927 QtWidgets`QWidget::event(this=0x00007fe7e8a4b9d0, event=0x00007fe7e2e2f9e0) + 3495 at qwidget.cpp:9220
      frame #14: 0x0000000106775a6d QtWidgets`QApplicationPrivate::notify_helper(this=<unavailable>, receiver=0x00007fe7e8a4b9d0, e=0x00007fe7e2e2f9e0) + 269 at qapplication.cpp:3745
      frame #15: 0x0000000106778de2 QtWidgets`QApplication::notify(this=<unavailable>, receiver=<unavailable>, e=<unavailable>) + 8306 at qapplication.cpp:3708
      frame #16: 0x0000000107766717 QtCore`QCoreApplication::notifyInternal2(receiver=0x00007fe7e8a4b9d0, event=0x00007fe7e2e2f9e0) + 167 at qcoreapplication.cpp:995
      frame #17: 0x00000001077673ef QtCore`QCoreApplicationPrivate::sendPostedEvents(receiver=0x0000000000000000, event_type=0, data=0x00007fe7d9d16800) + 591 at qcoreapplication.h:231
      frame #18: 0x000000011ba65fd5 QtQuick`QQuickRenderControl::~QQuickRenderControl() [inlined] QQuickRenderControlPrivate::windowDestroyed() + 25 at qquickrendercontrol.cpp:190
      frame #19: 0x000000011ba65fbc QtQuick`QQuickRenderControl::~QQuickRenderControl(this=0x00007fe7e8a75cc0) + 108 at qquickrendercontrol.cpp:181
      frame #20: 0x000000011bf5265e QtQuickWidgets`QQuickWidgetRenderControl::~QQuickWidgetRenderControl() [inlined] QQuickWidgetRenderControl::~QQuickWidgetRenderControl(this=0x00007fe7e8a75cc0) + 14 at qquickwidget.cpp:83
      frame #21: 0x000000011bf52659 QtQuickWidgets`QQuickWidgetRenderControl::~QQuickWidgetRenderControl() [inlined] QQuickWidgetRenderControl::~QQuickWidgetRenderControl(this=0x00007fe7e8a75cc0) at qquickwidget.cpp:83
      frame #22: 0x000000011bf52659 QtQuickWidgets`QQuickWidgetRenderControl::~QQuickWidgetRenderControl(this=0x00007fe7e8a75cc0) + 9 at qquickwidget.cpp:83
      frame #23: 0x000000011bf4d622 QtQuickWidgets`QQuickWidgetPrivate::~QQuickWidgetPrivate(this=0x00007fe7e8a75a30) + 162 at qquickwidget.cpp:212
      frame #24: 0x000000011bf4d7ce QtQuickWidgets`QQuickWidgetPrivate::~QQuickWidgetPrivate() [inlined] QQuickWidgetPrivate::~QQuickWidgetPrivate(this=0x00007fe7e8a75a30) + 14 at qquickwidget.cpp:202
      frame #25: 0x000000011bf4d7c9 QtQuickWidgets`QQuickWidgetPrivate::~QQuickWidgetPrivate(this=0x00007fe7e8a75a30) + 9 at qquickwidget.cpp:202
      frame #26: 0x000000010778ec41 QtCore`QObject::~QObject() [inlined] QScopedPointerDeleter<QObjectData>::cleanup(pointer=<unavailable>) + 2049 at qscopedpointer.h:60
      frame #27: 0x000000010778ec36 QtCore`QObject::~QObject() [inlined] QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::~QScopedPointer() + 4 at qscopedpointer.h:107
      frame #28: 0x000000010778ec32 QtCore`QObject::~QObject() [inlined] QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::~QScopedPointer() at qscopedpointer.h:105
      frame #29: 0x000000010778ec32 QtCore`QObject::~QObject(this=<unavailable>) + 2034 at qobject.cpp:1049
      frame #30: 0x00000001067a6870 QtWidgets`QWidget::~QWidget(this=0x00007fe7e8a74200) + 1248 at qwidget.cpp:1714
      frame #31: 0x0000000114b32fd1 QtWebEngineWidgets`non-virtual thunk to QtWebEngineCore::RenderWidgetHostViewQtDelegateWidget::~RenderWidgetHostViewQtDelegateWidget() + 193
      frame #32: 0x0000000114b9cb59 QtWebEngineCore`QtWebEngineCore::RenderWidgetHostViewQt::~RenderWidgetHostViewQt() + 361
      frame #33: 0x0000000114b9cd1e QtWebEngineCore`QtWebEngineCore::RenderWidgetHostViewQt::~RenderWidgetHostViewQt() + 14
      frame #34: 0x0000000115237221 QtWebEngineCore`content::RenderWidgetHostImpl::Destroy(bool) + 113
      frame #35: 0x0000000115232c1b QtWebEngineCore`content::RenderViewHostImpl::ShutdownAndDestroy() + 123
      frame #36: 0x00000001150b7d83 QtWebEngineCore`content::FrameTree::ReleaseRenderViewHostRef(content::RenderViewHostImpl*) + 355
      frame #37: 0x00000001150cd5ad QtWebEngineCore`content::RenderFrameHostImpl::~RenderFrameHostImpl() + 685
      frame #38: 0x00000001150cd9fe QtWebEngineCore`content::RenderFrameHostImpl::~RenderFrameHostImpl() + 14
      frame #39: 0x00000001150df433 QtWebEngineCore`content::RenderFrameHostManager::~RenderFrameHostManager() + 275
      frame #40: 0x00000001150b99f9 QtWebEngineCore`content::FrameTreeNode::~FrameTreeNode() + 1129
      frame #41: 0x00000001150b6b5e QtWebEngineCore`content::FrameTree::~FrameTree() + 30
      frame #42: 0x00000001152e5762 QtWebEngineCore`content::WebContentsImpl::~WebContentsImpl() + 4050
      frame #43: 0x00000001152e58ce QtWebEngineCore`content::WebContentsImpl::~WebContentsImpl() + 14
      frame #44: 0x0000000114bb8c84 QtWebEngineCore`QtWebEngineCore::WebContentsAdapterPrivate::~WebContentsAdapterPrivate() + 36
      frame #45: 0x0000000114bb9b1b QtWebEngineCore`QtWebEngineCore::WebContentsAdapter::~WebContentsAdapter() + 27
      frame #46: 0x0000000114b1edad QtWebEngineWidgets`QWebEnginePagePrivate::~QWebEnginePagePrivate() + 157
      frame #47: 0x0000000114b1edee QtWebEngineWidgets`QWebEnginePagePrivate::~QWebEnginePagePrivate() + 14
      frame #48: 0x0000000114b20ee1 QtWebEngineWidgets`QWebEnginePage::~QWebEnginePage() + 49
      frame #49: 0x0000000114a93dee libHelp.dylib`Help::Internal::WebEngineHelpPage::~WebEngineHelpPage() + 14
      frame #50: 0x000000010778ee53 QtCore`QObjectPrivate::deleteChildren(this=0x00007fe7e8a6f240) + 243 at qobject.cpp:1975
      frame #51: 0x00000001067a67fd QtWidgets`QWidget::~QWidget(this=0x00007fe7e8a6f240) + 1133 at qwidget.cpp:1694
      frame #52: 0x0000000114aa706e libHelp.dylib`Help::Internal::WebEngineHelpViewer::~WebEngineHelpViewer() + 14
      frame #53: 0x000000010778ee53 QtCore`QObjectPrivate::deleteChildren(this=0x00007fe7e8a346f0) + 243 at qobject.cpp:1975
      frame #54: 0x00000001067a67fd QtWidgets`QWidget::~QWidget(this=0x00007fe7e8a346f0) + 1133 at qwidget.cpp:1694
      frame #55: 0x0000000106918b7e QtWidgets`QStackedWidget::~QStackedWidget() [inlined] QStackedWidget::~QStackedWidget(this=0x00007fe7e8a4bae0) + 14 at qstackedwidget.cpp:149
      frame #56: 0x0000000106918b79 QtWidgets`QStackedWidget::~QStackedWidget() [inlined] QStackedWidget::~QStackedWidget(this=0x00007fe7e8a4bae0) at qstackedwidget.cpp:148
      frame #57: 0x0000000106918b79 QtWidgets`QStackedWidget::~QStackedWidget(this=0x00007fe7e8a4bae0) + 9 at qstackedwidget.cpp:148
      frame #58: 0x000000010778ee53 QtCore`QObjectPrivate::deleteChildren(this=0x00007fe7e8a3c500) + 243 at qobject.cpp:1975
      frame #59: 0x00000001067a67fd QtWidgets`QWidget::~QWidget(this=0x00007fe7e8a3c500) + 1133 at qwidget.cpp:1694
      frame #60: 0x00000001067a703e QtWidgets`QWidget::~QWidget() [inlined] QWidget::~QWidget(this=0x00007fe7e8974880) + 14 at qwidget.cpp:1556
      frame #61: 0x00000001067a7039 QtWidgets`QWidget::~QWidget(this=0x00007fe7e8974880) + 9 at qwidget.cpp:1556
      frame #62: 0x000000010778ee53 QtCore`QObjectPrivate::deleteChildren(this=0x00007fe7e8989d20) + 243 at qobject.cpp:1975
      frame #63: 0x00000001067a67fd QtWidgets`QWidget::~QWidget(this=0x00007fe7e8989d20) + 1133 at qwidget.cpp:1694
      frame #64: 0x00000001115cbdee libCore.dylib`Core::MiniSplitter::~MiniSplitter() + 14
      frame #65: 0x000000010778ee53 QtCore`QObjectPrivate::deleteChildren(this=0x00007fe7e8a3b840) + 243 at qobject.cpp:1975
      frame #66: 0x00000001067a67fd QtWidgets`QWidget::~QWidget(this=0x00007fe7e8a3b840) + 1133 at qwidget.cpp:1694
      frame #67: 0x0000000114a8fdeb libHelp.dylib`Help::Internal::HelpWidget::~HelpWidget() + 859
      frame #68: 0x0000000114a8feee libHelp.dylib`Help::Internal::HelpWidget::~HelpWidget() + 14
      frame #69: 0x0000000114a76eef libHelp.dylib`Help::Internal::HelpPlugin::aboutToShutdown() + 47
      frame #70: 0x0000000106501fb8 libExtensionSystem.4.5.82.dylib`ExtensionSystem::Internal::PluginManagerPrivate::loadPlugin(ExtensionSystem::PluginSpec*, ExtensionSystem::PluginSpec::State) + 680
      frame #71: 0x0000000106501c20 libExtensionSystem.4.5.82.dylib`ExtensionSystem::Internal::PluginManagerPrivate::stopAll() + 224
      frame #72: 0x00000001064fb537 libExtensionSystem.4.5.82.dylib`ExtensionSystem::Internal::PluginManagerPrivate::shutdown() + 23
      frame #73: 0x0000000107796fab QtCore`QMetaObject::activate(QObject*, int, int, void**) [inlined] QtPrivate::QSlotObjectBase::call(this=<unavailable>, r=<unavailable>, a=<unavailable>) + 2011 at qobject_impl.h:101
      frame #74: 0x0000000107796f8f QtCore`QMetaObject::activate(sender=0x00007fff598ba988, signalOffset=<unavailable>, local_signal_index=<unavailable>, argv=<unavailable>) + 1983 at qobject.cpp:3728
      frame #75: 0x0000000107766e32 QtCore`QCoreApplication::exec() [inlined] QCoreApplicationPrivate::q_func(this=<unavailable>) + 402 at qcoreapplication_p.h:72
      frame #76: 0x0000000107766e29 QtCore`QCoreApplication::exec() [inlined] QCoreApplicationPrivate::execCleanup(this=<unavailable>, this=0x00007fe7d9d16dc0) + 24 at qcoreapplication.cpp:1288
      frame #77: 0x0000000107766e11 QtCore`QCoreApplication::exec() + 369 at qcoreapplication.cpp:1272
      frame #78: 0x00000001063504b9 Qt Creator`main + 15353
      frame #79: 0x00007fff906e25fd libdyld.dylib`start + 1
      
      
      

      Attachments

        Issue Links

          For Gerrit Dashboard: QTBUG-63945
          # Subject Branch Project Status CR V

          Activity

            People

              alexandru.croitor Alexandru Croitor
              rjvbertin René Bertin
              Votes:
              1 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes