Uploaded image for project: 'Qt Creator'
  1. Qt Creator
  2. QTCREATORBUG-19582

Crash when exiting Qt Creator after opening external help windows

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • Qt Creator 4.6.0-beta1
    • Qt Creator 4.5.0
    • Help System
    • None
    • macOS 10.12
      Qt 5.9.3
      Creator 4.5-ish (between rc1 and release) 8bc3ac9177e6f8f05c2c64a400d244a5cc82aa0a
    • b23dab3ba29586a321b99d18ec3eec46a64eddc7

    Description

      Exact steps to reproduce:
      1) Run creator (make sure that the qt used for creator was built with webengine)
      2) Go to Creator Preferences -> Help -> Startup group -> On Context Help -> Always show in external window
      3) Apply preferences and close the dialog
      4) Press F1
      5) Go to Mac Menu bar and choose the "Quit Qt Creator" menu item.
      6) Observe that the Main window is closed, but the help dialog stays around
      7) Quit the application by right clicking on Qt Creator Dock Item, and then choosing Quit
      8) Observe crash

      Stack trace:

      Process 13107 stopped
      * thread #1, name = 'CrBrowserMain', queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x8)
          frame #0: QtWidgets`QWidget::~QWidget() [inlined] QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::data() const at qscopedpointer.h:140 [opt]
         137
         138 	    T *data() const Q_DECL_NOTHROW
         139 	    {
      -> 140 	        return d;
         141 	    }
         142
         143 	    bool isNull() const Q_DECL_NOTHROW
      (lldb) bt
      * thread #1, name = 'CrBrowserMain', queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x8)
        * frame #0: QtWidgets`QWidget::~QWidget() [inlined] QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::data() const at qscopedpointer.h:140 [opt]
          frame #1: QtWidgets`QWidget::~QWidget() [inlined] QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::pointer qGetPtrHelper<QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> > >(QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> > const&) at qglobal.h:999 [opt]
          frame #2: QtWidgets`QWidget::~QWidget() [inlined] QWidget::d_func(this=0x0000000000000000) at qwidget.h:131 [opt]
          frame #3: QtWidgets`QWidget::~QWidget(this=0x000000013473f080) at qwidget.cpp:1617 [opt]
          frame #4: QtWidgets`QWidget::~QWidget() [inlined] QWidget::~QWidget(this=0x000000013473f080) at qwidget.cpp:1571 [opt]
          frame #5: QtWidgets`QWidget::~QWidget(this=0x000000013473f080) at qwidget.cpp:1571 [opt]
          frame #6: QtCore`QObject::event(QEvent*) [inlined] qDeleteInEventHandler(o=0x000000013473f080) at qobject.cpp:4598 [opt]
          frame #7: QtCore`QObject::event(this=0x000000013473f080, e=<unavailable>) at qobject.cpp:1237 [opt]
          frame #8: QtWidgets`QWidget::event(this=0x000000013473f080, event=0x000000011edfa8b0) at qwidget.cpp:9266 [opt]
          frame #9: QtWidgets`QApplicationPrivate::notify_helper(this=<unavailable>, receiver=0x000000013473f080, e=0x000000011edfa8b0) at qapplication.cpp:3722 [opt]
          frame #10: QtWidgets`QApplication::notify(this=<unavailable>, receiver=<unavailable>, e=<unavailable>) at qapplication.cpp:3094 [opt]
          frame #11: QtCore`QCoreApplication::notifyInternal2(receiver=0x000000013473f080, event=0x000000011edfa8b0) at qcoreapplication.cpp:1018 [opt]
          frame #12: QtCore`QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) [inlined] QCoreApplication::sendEvent(receiver=<unavailable>, event=<unavailable>) at qcoreapplication.h:233 [opt]
          frame #13: QtCore`QCoreApplicationPrivate::sendPostedEvents(receiver=0x0000000000000000, event_type=52, data=0x0000000101e0ad90) at qcoreapplication.cpp:1678 [opt]
          frame #14: QtQuick`QQuickRenderControl::~QQuickRenderControl() [inlined] QQuickRenderControlPrivate::windowDestroyed(this=<unavailable>) at qquickrendercontrol.cpp:190 [opt]
          frame #15: QtQuick`QQuickRenderControl::~QQuickRenderControl(this=0x00000001346b7830) at qquickrendercontrol.cpp:181 [opt]
          frame #16: QtQuickWidgets`QQuickWidgetRenderControl::~QQuickWidgetRenderControl() [inlined] QQuickWidgetRenderControl::~QQuickWidgetRenderControl(this=0x00000001346b7830) at qquickwidget.cpp:79 [opt]
          frame #17: QtQuickWidgets`QQuickWidgetRenderControl::~QQuickWidgetRenderControl() [inlined] QQuickWidgetRenderControl::~QQuickWidgetRenderControl(this=0x00000001346b7830) at qquickwidget.cpp:79 [opt]
          frame #18: QtQuickWidgets`QQuickWidgetRenderControl::~QQuickWidgetRenderControl(this=0x00000001346b7830) at qquickwidget.cpp:79 [opt]
          frame #19: QtQuickWidgets`QQuickWidgetPrivate::~QQuickWidgetPrivate(this=0x00000001346e13a0) at qquickwidget.cpp:219 [opt]
          frame #20: QtQuickWidgets`QQuickWidgetPrivate::~QQuickWidgetPrivate() [inlined] QQuickWidgetPrivate::~QQuickWidgetPrivate(this=0x00000001346e13a0) at qquickwidget.cpp:209 [opt]
          frame #21: QtQuickWidgets`QQuickWidgetPrivate::~QQuickWidgetPrivate(this=0x00000001346e13a0) at qquickwidget.cpp:209 [opt]
          frame #22: QtCore`QObject::~QObject() [inlined] QScopedPointerDeleter<QObjectData>::cleanup(pointer=<unavailable>) at qscopedpointer.h:60 [opt]
          frame #23: QtCore`QObject::~QObject() at qscopedpointer.h:107 [opt]
          frame #24: QtCore`QObject::~QObject() [inlined] QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::~QScopedPointer() at qscopedpointer.h:105 [opt]
          frame #25: QtCore`QObject::~QObject(this=0x00000001346e1330) at qobject.cpp:1032 [opt]
          frame #26: QtWidgets`QWidget::~QWidget(this=0x00000001346e1330) at qwidget.cpp:1733 [opt]
          frame #27: QtWebEngineWidgets`QtWebEngineCore::RenderWidgetHostViewQtDelegateWidget::~RenderWidgetHostViewQtDelegateWidget() [inlined] QtWebEngineCore::RenderWidgetHostViewQtDelegateWidget::~RenderWidgetHostViewQtDelegateWidget(this=<unavailable>) at render_widget_host_view_qt_delegate_widget.h:51 [opt]
          frame #28: QtWebEngineWidgets`QtWebEngineCore::RenderWidgetHostViewQtDelegateWidget::~RenderWidgetHostViewQtDelegateWidget() [inlined] QtWebEngineCore::RenderWidgetHostViewQtDelegateWidget::~RenderWidgetHostViewQtDelegateWidget(this=<unavailable>) at render_widget_host_view_qt_delegate_widget.h:51 [opt]
          frame #29: QtWebEngineWidgets`QtWebEngineCore::RenderWidgetHostViewQtDelegateWidget::~RenderWidgetHostViewQtDelegateWidget(this=0x00000001346e1330) at render_widget_host_view_qt_delegate_widget.h:51 [opt]
          frame #30: QtWebEngineCore`QtWebEngineCore::RenderWidgetHostViewQt::~RenderWidgetHostViewQt() [inlined] std::__1::default_delete<QtWebEngineCore::RenderWidgetHostViewQtDelegate>::operator(__ptr=<unavailable>)(QtWebEngineCore::RenderWidgetHostViewQtDelegate*) const at memory:2537 [opt]
          frame #31: QtWebEngineCore`QtWebEngineCore::RenderWidgetHostViewQt::~RenderWidgetHostViewQt() [inlined] std::__1::unique_ptr<QtWebEngineCore::RenderWidgetHostViewQtDelegate, std::__1::default_delete<QtWebEngineCore::RenderWidgetHostViewQtDelegate> >::reset(QtWebEngineCore::RenderWidgetHostViewQtDelegate*) at memory:2736 [opt]
          frame #32: QtWebEngineCore`QtWebEngineCore::RenderWidgetHostViewQt::~RenderWidgetHostViewQt() [inlined] std::__1::unique_ptr<QtWebEngineCore::RenderWidgetHostViewQtDelegate, std::__1::default_delete<QtWebEngineCore::RenderWidgetHostViewQtDelegate> >::~unique_ptr() at memory:2704 [opt]
          frame #33: QtWebEngineCore`QtWebEngineCore::RenderWidgetHostViewQt::~RenderWidgetHostViewQt() [inlined] std::__1::unique_ptr<QtWebEngineCore::RenderWidgetHostViewQtDelegate, std::__1::default_delete<QtWebEngineCore::RenderWidgetHostViewQtDelegate> >::~unique_ptr() at memory:2704 [opt]
          frame #34: QtWebEngineCore`QtWebEngineCore::RenderWidgetHostViewQt::~RenderWidgetHostViewQt(this=0x000000013ba5e000) at render_widget_host_view_qt.cpp:301 [opt]
          frame #35: QtWebEngineCore`QtWebEngineCore::RenderWidgetHostViewQt::~RenderWidgetHostViewQt() [inlined] QtWebEngineCore::RenderWidgetHostViewQt::~RenderWidgetHostViewQt(this=0x000000013ba5e000) at render_widget_host_view_qt.cpp:293 [opt]
          frame #36: QtWebEngineCore`QtWebEngineCore::RenderWidgetHostViewQt::~RenderWidgetHostViewQt(this=0x000000013ba5e000) at render_widget_host_view_qt.cpp:293 [opt]
          frame #37: QtWebEngineCore`::Destroy() at render_widget_host_impl.cc:1685 [opt]
          frame #38: QtWebEngineCore`::ShutdownAndDestroy() at render_view_host_impl.cc:779 [opt]
          frame #39: QtWebEngineCore`::ReleaseRenderViewHostRef() at frame_tree.cc:365 [opt]
          frame #40: QtWebEngineCore`::~RenderFrameHostImpl() at render_frame_host_impl.cc:442 [opt]
          frame #41: QtWebEngineCore`::~RenderFrameHostImpl() [inlined] ~RenderFrameHostImpl at render_frame_host_impl.cc:393 [opt]
          frame #42: QtWebEngineCore`::~RenderFrameHostImpl() at render_frame_host_impl.cc:393 [opt]
          frame #43: QtWebEngineCore`::~RenderFrameHostManager() [inlined] operator() at memory:2537 [opt]
          frame #44: QtWebEngineCore`::~RenderFrameHostManager() [inlined] reset at memory:2736 [opt]
          frame #45: QtWebEngineCore`::~RenderFrameHostManager() [inlined] ~unique_ptr at memory:2704 [opt]
          frame #46: QtWebEngineCore`::~RenderFrameHostManager() [inlined] ~unique_ptr at memory:2704 [opt]
          frame #47: QtWebEngineCore`::~RenderFrameHostManager() at render_frame_host_manager.cc:84 [opt]
          frame #48: QtWebEngineCore`::~FrameTreeNode() at frame_tree_node.cc:138 [opt]
          frame #49: QtWebEngineCore`::~FrameTree() at frame_tree.cc:116 [opt]
          frame #50: QtWebEngineCore`::~WebContentsImpl() at web_contents_impl.cc:582 [opt]
          frame #51: QtWebEngineCore`::~WebContentsImpl() [inlined] ~WebContentsImpl at web_contents_impl.cc:483 [opt]
          frame #52: QtWebEngineCore`::~WebContentsImpl() at web_contents_impl.cc:483 [opt]
          frame #53: QtWebEngineCore`QtWebEngineCore::WebContentsAdapterPrivate::~WebContentsAdapterPrivate() [inlined] std::__1::default_delete<content::WebContents>::operator(__ptr=<unavailable>)(content::WebContents*) const at memory:2537 [opt]
          frame #54: QtWebEngineCore`QtWebEngineCore::WebContentsAdapterPrivate::~WebContentsAdapterPrivate() [inlined] std::__1::unique_ptr<content::WebContents, std::__1::default_delete<content::WebContents> >::reset(content::WebContents*) at memory:2736 [opt]
          frame #55: QtWebEngineCore`QtWebEngineCore::WebContentsAdapterPrivate::~WebContentsAdapterPrivate(this=0x0000000134788aa0) at web_contents_adapter.cpp:360 [opt]
          frame #56: QtWebEngineCore`QtWebEngineCore::WebContentsAdapter::~WebContentsAdapter() [inlined] QtWebEngineCore::WebContentsAdapterPrivate::~WebContentsAdapterPrivate(this=0x0000000134788aa0) at web_contents_adapter.cpp:358 [opt]
          frame #57: QtWebEngineCore`QtWebEngineCore::WebContentsAdapter::~WebContentsAdapter() [inlined] QScopedPointerDeleter<QtWebEngineCore::WebContentsAdapterPrivate>::cleanup(pointer=0x0000000134788aa0) at qscopedpointer.h:60 [opt]
          frame #58: QtWebEngineCore`QtWebEngineCore::WebContentsAdapter::~WebContentsAdapter() at qscopedpointer.h:107 [opt]
          frame #59: QtWebEngineCore`QtWebEngineCore::WebContentsAdapter::~WebContentsAdapter() [inlined] QScopedPointer<QtWebEngineCore::WebContentsAdapterPrivate, QScopedPointerDeleter<QtWebEngineCore::WebContentsAdapterPrivate> >::~QScopedPointer() at qscopedpointer.h:105 [opt]
          frame #60: QtWebEngineCore`QtWebEngineCore::WebContentsAdapter::~WebContentsAdapter() [inlined] QtWebEngineCore::WebContentsAdapter::~WebContentsAdapter(this=0x0000000134788a80) at web_contents_adapter.cpp:400 [opt]
          frame #61: QtWebEngineCore`QtWebEngineCore::WebContentsAdapter::~WebContentsAdapter(this=0x0000000134788a80) at web_contents_adapter.cpp:399 [opt]
          frame #62: QtWebEngineWidgets`QWebEnginePagePrivate::~QWebEnginePagePrivate() [inlined] QtSharedPointer::ExternalRefCountData::destroy(this=<unavailable>) at qsharedpointer_impl.h:157 [opt]
          frame #63: QtWebEngineWidgets`QWebEnginePagePrivate::~QWebEnginePagePrivate() [inlined] QSharedPointer<QtWebEngineCore::WebContentsAdapter>::deref(dd=0x0000000134788a70) at qsharedpointer_impl.h:461 [opt]
          frame #64: QtWebEngineWidgets`QWebEnginePagePrivate::~QWebEnginePagePrivate() [inlined] QSharedPointer<QtWebEngineCore::WebContentsAdapter>::deref() at qsharedpointer_impl.h:456 [opt]
          frame #65: QtWebEngineWidgets`QWebEnginePagePrivate::~QWebEnginePagePrivate() [inlined] QSharedPointer<QtWebEngineCore::WebContentsAdapter>::~QSharedPointer() at qsharedpointer_impl.h:313 [opt]
          frame #66: QtWebEngineWidgets`QWebEnginePagePrivate::~QWebEnginePagePrivate() [inlined] QSharedPointer<QtWebEngineCore::WebContentsAdapter>::~QSharedPointer() at qsharedpointer_impl.h:313 [opt]
          frame #67: QtWebEngineWidgets`QWebEnginePagePrivate::~QWebEnginePagePrivate(this=<unavailable>) at qwebenginepage.cpp:250 [opt]
          frame #68: QtWebEngineWidgets`QWebEnginePagePrivate::~QWebEnginePagePrivate() [inlined] QWebEnginePagePrivate::~QWebEnginePagePrivate(this=0x00000001347888c0) at qwebenginepage.cpp:247 [opt]
          frame #69: QtWebEngineWidgets`QWebEnginePagePrivate::~QWebEnginePagePrivate(this=0x00000001347888c0) at qwebenginepage.cpp:247 [opt]
          frame #70: QtWebEngineWidgets`QWebEnginePage::~QWebEnginePage() [inlined] QScopedPointerDeleter<QWebEnginePagePrivate>::cleanup(pointer=<unavailable>) at qscopedpointer.h:60 [opt]
          frame #71: QtWebEngineWidgets`QWebEnginePage::~QWebEnginePage() at qscopedpointer.h:107 [opt]
          frame #72: QtWebEngineWidgets`QWebEnginePage::~QWebEnginePage() [inlined] QScopedPointer<QWebEnginePagePrivate, QScopedPointerDeleter<QWebEnginePagePrivate> >::~QScopedPointer() at qscopedpointer.h:105 [opt]
          frame #73: QtWebEngineWidgets`QWebEnginePage::~QWebEnginePage(this=0x0000000134788200) at qwebenginepage.cpp:835 [opt]
          frame #74: 0x0000000110e5081e libHelp.dylib`Help::Internal::WebEngineHelpPage::~WebEngineHelpPage() + 14
          frame #75: QtCore`QObjectPrivate::deleteChildren(this=0x00000001347883f0) at qobject.cpp:1992 [opt]
          frame #76: QtWidgets`QWidget::~QWidget(this=0x00000001347880a0) at qwidget.cpp:1709 [opt]
          frame #77: 0x0000000110e5650e libHelp.dylib`Help::Internal::WebEngineHelpViewer::~WebEngineHelpViewer() + 14
          frame #78: QtCore`QObjectPrivate::deleteChildren(this=0x000000013473f3c0) at qobject.cpp:1992 [opt]
          frame #79: QtWidgets`QWidget::~QWidget(this=0x000000013473f390) at qwidget.cpp:1709 [opt]
          frame #80: QtWidgets`QStackedWidget::~QStackedWidget() [inlined] QStackedWidget::~QStackedWidget(this=0x000000013473f390) at qstackedwidget.cpp:147 [opt]
          frame #81: QtWidgets`QStackedWidget::~QStackedWidget() [inlined] QStackedWidget::~QStackedWidget(this=0x000000013473f390) at qstackedwidget.cpp:146 [opt]
          frame #82: QtWidgets`QStackedWidget::~QStackedWidget(this=0x000000013473f390) at qstackedwidget.cpp:146 [opt]
          frame #83: QtCore`QObjectPrivate::deleteChildren(this=0x0000000134740420) at qobject.cpp:1992 [opt]
          frame #84: QtWidgets`QWidget::~QWidget(this=0x00000001347402f0) at qwidget.cpp:1709 [opt]
          frame #85: QtWidgets`QWidget::~QWidget() [inlined] QWidget::~QWidget(this=0x00000001347402f0) at qwidget.cpp:1571 [opt]
          frame #86: QtWidgets`QWidget::~QWidget(this=0x00000001347402f0) at qwidget.cpp:1571 [opt]
          frame #87: QtCore`QObjectPrivate::deleteChildren(this=0x000000013473fb40) at qobject.cpp:1992 [opt]
          frame #88: QtWidgets`QWidget::~QWidget(this=0x000000013473fb00) at qwidget.cpp:1709 [opt]
          frame #89: 0x000000010e0870fe libCore.dylib`Core::MiniSplitter::~MiniSplitter() + 14
          frame #90: QtCore`QObjectPrivate::deleteChildren(this=0x000000013473f1a0) at qobject.cpp:1992 [opt]
          frame #91: QtWidgets`QWidget::~QWidget(this=0x000000013473f080) at qwidget.cpp:1709 [opt]
          frame #92: 0x0000000110e3a4e8 libHelp.dylib`Help::Internal::HelpWidget::~HelpWidget() + 984
          frame #93: 0x0000000110e3a5ee libHelp.dylib`Help::Internal::HelpWidget::~HelpWidget() + 14
          frame #94: 0x0000000110e301cf libHelp.dylib`Help::Internal::HelpPlugin::aboutToShutdown() + 47
          frame #95: 0x00000001013db7c2 libExtensionSystem.4.5.0.dylib`ExtensionSystem::Internal::PluginManagerPrivate::loadPlugin(ExtensionSystem::PluginSpec*, ExtensionSystem::PluginSpec::State) + 674
          frame #96: 0x00000001013db430 libExtensionSystem.4.5.0.dylib`ExtensionSystem::Internal::PluginManagerPrivate::stopAll() + 240
          frame #97: 0x00000001013d4507 libExtensionSystem.4.5.0.dylib`ExtensionSystem::Internal::PluginManagerPrivate::shutdown() + 23
          frame #98: QtCore`QMetaObject::activate(QObject*, int, int, void**) [inlined] QtPrivate::QSlotObjectBase::call(this=<unavailable>, r=<unavailable>, a=0x00007fff5fbff050) at qobject_impl.h:101 [opt]
          frame #99: QtCore`QMetaObject::activate(sender=<unavailable>, signalOffset=<unavailable>, local_signal_index=<unavailable>, argv=<unavailable>) at qobject.cpp:3749 [opt]
          frame #100: QtCore`QCoreApplication::exec() [inlined] QCoreApplication::aboutToQuit(this=<unavailable>) at moc_qcoreapplication.cpp:249 [opt]
          frame #101: QtCore`QCoreApplication::exec() [inlined] QCoreApplicationPrivate::execCleanup(this=0x0000000101e0b260) at qcoreapplication.cpp:1311 [opt]
          frame #102: QtCore`QCoreApplication::exec() at qcoreapplication.cpp:1295 [opt]
          frame #103: Qt Creator`main(argc=<unavailable>, argv=<unavailable>) at main.cpp:549 [opt]
          frame #104: 0x00007fffcb6dc235 libdyld.dylib`start + 1
          frame #105: 0x00007fffcb6dc235 libdyld.dylib`start + 1
      

      The same does not happen if the textbrowser backend is used for the help plugin, so the help windows gets closed when the main window is closed.
      Thus I suppose it is some interaction between WebEngine code and Creator code.

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              alexandru.croitor Alexandru Croitor
              alexandru.croitor Alexandru Croitor
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes