Details
-
Bug
-
Resolution: Done
-
P2: Important
-
Qt Creator 4.5.0
-
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
- relates to
-
QTBUG-58982 Demobrowser crash when closing second window via Ctrl+W shortcut
- Closed
-
QTBUG-63945 QtWebEngine causing crash on exit
- Closed