Bug 385703 - QtWebengine documentatio viewer causes KDevelop crash on exit
Summary: QtWebengine documentatio viewer causes KDevelop crash on exit
Status: RESOLVED WORKSFORME
Alias: None
Product: kdevelop
Classification: Applications
Component: Documentation viewer (show other bugs)
Version: 5.1.80
Platform: Compiled Sources macOS
: NOR normal
Target Milestone: ---
Assignee: kdevelop-bugs-null
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-10-13 14:56 UTC by RJVB
Modified: 2022-12-10 05:15 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description RJVB 2017-10-13 14:56:19 UTC
The QtWebengine docviewer backend causes a systematic crash on exit on Mac (Qt 5.8.0).

1- launch a KDevelop session
2- click on the "Documentation" toolbar button
3- open the proposed (QtHelp) documentation section
4- repeat 2) to close the view
4- exit

After step 3) I see this on the calling terminal:
js: Not allowed to load local resource: file:///var/folders/j1/1439ppj08xj8h6006s6drbq00000gs/T/kdevelop.N13700
(NB: that's the simple CSS the plugin tries to use)
QObject::startTimer: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
js: Uncaught ReferenceError: mw is not defined
js: Uncaught ReferenceError: mw is not defined
QObject::startTimer: Timers can only be used with threads started with QThread

backtrace below. The crash is deep in Qt but I haven't seen it with any other applications that use QWE.

* 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:971 [opt]
    frame #2: QtWidgets`QWidget::~QWidget() [inlined] QWidget::d_func(this=0x0000000000000000) at qwidget.h:131 [opt]
    frame #3: QtWidgets`QWidget::~QWidget(this=0x00007fe35dc3abb0) at qwidget.cpp:1602 [opt]
    frame #4: QtWidgets`QWidget::~QWidget() [inlined] QWidget::~QWidget(this=0x00007fe35dc3abb0) at qwidget.cpp:1556 [opt]
    frame #5: QtWidgets`QWidget::~QWidget(this=0x00007fe35dc3abb0) at qwidget.cpp:1556 [opt]
    frame #6: QtCore`QObject::event(QEvent*) [inlined] qDeleteInEventHandler(o=0x00007fe35dc3abb0) at qobject.cpp:4557 [opt]
    frame #7: QtCore`QObject::event(this=0x00007fe35dc3abb0, e=<unavailable>) at qobject.cpp:1254 [opt]
    frame #8: QtWidgets`QWidget::event(this=0x00007fe35dc3abb0, event=0x00007fe35945b110) at qwidget.cpp:9220 [opt]
    frame #9: QtWidgets`QApplicationPrivate::notify_helper(this=<unavailable>, receiver=0x00007fe35dc3abb0, e=0x00007fe35945b110) at qapplication.cpp:3745 [opt]
    frame #10: QtWidgets`QApplication::notify(this=<unavailable>, receiver=<unavailable>, e=<unavailable>) at qapplication.cpp:3708 [opt]
    frame #11: QtCore`QCoreApplication::notifyInternal2(receiver=0x00007fe35dc3abb0, event=0x00007fe35945b110) at qcoreapplication.cpp:995 [opt]
    frame #12: QtCore`QCoreApplicationPrivate::sendPostedEvents(receiver=0x0000000000000000, event_type=0, data=0x00007fe352515d40) at qcoreapplication.h:231 [opt]
    frame #13: QtQuick`QQuickRenderControl::~QQuickRenderControl() [inlined] QQuickRenderControlPrivate::windowDestroyed() at qquickrendercontrol.cpp:190 [opt]
    frame #14: QtQuick`QQuickRenderControl::~QQuickRenderControl(this=0x00007fe35b5465a0) at qquickrendercontrol.cpp:181 [opt]
    frame #15: QtQuickWidgets`QQuickWidgetRenderControl::~QQuickWidgetRenderControl() [inlined] QQuickWidgetRenderControl::~QQuickWidgetRenderControl(this=0x00007fe35b5465a0) at qquickwidget.cpp:83 [opt]
    frame #16: QtQuickWidgets`QQuickWidgetRenderControl::~QQuickWidgetRenderControl() [inlined] QQuickWidgetRenderControl::~QQuickWidgetRenderControl(this=0x00007fe35b5465a0) at qquickwidget.cpp:83 [opt]
    frame #17: QtQuickWidgets`QQuickWidgetRenderControl::~QQuickWidgetRenderControl(this=0x00007fe35b5465a0) at qquickwidget.cpp:83 [opt]
    frame #18: QtQuickWidgets`QQuickWidgetPrivate::~QQuickWidgetPrivate(this=0x00007fe356f0d420) at qquickwidget.cpp:212 [opt]
    frame #19: QtQuickWidgets`QQuickWidgetPrivate::~QQuickWidgetPrivate() [inlined] QQuickWidgetPrivate::~QQuickWidgetPrivate(this=0x00007fe356f0d420) at qquickwidget.cpp:202 [opt]
    frame #20: QtQuickWidgets`QQuickWidgetPrivate::~QQuickWidgetPrivate(this=0x00007fe356f0d420) at qquickwidget.cpp:202 [opt]
    frame #21: QtCore`QObject::~QObject() [inlined] QScopedPointerDeleter<QObjectData>::cleanup(pointer=<unavailable>) at qscopedpointer.h:60 [opt]
    frame #22: QtCore`QObject::~QObject() [inlined] QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::~QScopedPointer() at qscopedpointer.h:107 [opt]
    frame #23: QtCore`QObject::~QObject() [inlined] QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::~QScopedPointer() at qscopedpointer.h:105 [opt]
    frame #24: QtCore`QObject::~QObject(this=<unavailable>) at qobject.cpp:1049 [opt]
    frame #25: QtWidgets`QWidget::~QWidget(this=0x00007fe35d93d5a0) at qwidget.cpp:1714 [opt]
    frame #26: 0x0000000109db2fd1 QtWebEngineWidgets`non-virtual thunk to QtWebEngineCore::RenderWidgetHostViewQtDelegateWidget::~RenderWidgetHostViewQtDelegateWidget() + 193
    frame #27: 0x0000000109e1eb59 QtWebEngineCore`QtWebEngineCore::RenderWidgetHostViewQt::~RenderWidgetHostViewQt() + 361
    frame #28: 0x0000000109e1ed1e QtWebEngineCore`QtWebEngineCore::RenderWidgetHostViewQt::~RenderWidgetHostViewQt() + 14
    frame #29: 0x000000010a4b9221 QtWebEngineCore`content::RenderWidgetHostImpl::Destroy(bool) + 113
    frame #30: 0x000000010a4b4c1b QtWebEngineCore`content::RenderViewHostImpl::ShutdownAndDestroy() + 123
    frame #31: 0x000000010a339d83 QtWebEngineCore`content::FrameTree::ReleaseRenderViewHostRef(content::RenderViewHostImpl*) + 355
    frame #32: 0x000000010a34f5ad QtWebEngineCore`content::RenderFrameHostImpl::~RenderFrameHostImpl() + 685
    frame #33: 0x000000010a34f9fe QtWebEngineCore`content::RenderFrameHostImpl::~RenderFrameHostImpl() + 14
    frame #34: 0x000000010a361433 QtWebEngineCore`content::RenderFrameHostManager::~RenderFrameHostManager() + 275
    frame #35: 0x000000010a33b9f9 QtWebEngineCore`content::FrameTreeNode::~FrameTreeNode() + 1129
    frame #36: 0x000000010a338b5e QtWebEngineCore`content::FrameTree::~FrameTree() + 30
    frame #37: 0x000000010a567762 QtWebEngineCore`content::WebContentsImpl::~WebContentsImpl() + 4050
    frame #38: 0x000000010a5678ce QtWebEngineCore`content::WebContentsImpl::~WebContentsImpl() + 14
    frame #39: 0x0000000109e3ac84 QtWebEngineCore`QtWebEngineCore::WebContentsAdapterPrivate::~WebContentsAdapterPrivate() + 36
    frame #40: 0x0000000109e3bb1b QtWebEngineCore`QtWebEngineCore::WebContentsAdapter::~WebContentsAdapter() + 27
    frame #41: 0x0000000109d9edad QtWebEngineWidgets`QWebEnginePagePrivate::~QWebEnginePagePrivate() + 157
    frame #42: 0x0000000109d9edee QtWebEngineWidgets`QWebEnginePagePrivate::~QWebEnginePagePrivate() + 14
    frame #43: 0x0000000109da0ee1 QtWebEngineWidgets`QWebEnginePage::~QWebEnginePage() + 49
    frame #44: libKDevPlatformDocumentation.52.dylib`StandardDocumentationPage::~StandardDocumentationPage() [inlined] StandardDocumentationPage::~StandardDocumentationPage(this=0x00007fe359350ba0) at standarddocumentationview.cpp:54 [opt]
    frame #45: libKDevPlatformDocumentation.52.dylib`StandardDocumentationPage::~StandardDocumentationPage() [inlined] StandardDocumentationPage::~StandardDocumentationPage(this=0x00007fe359350ba0) at standarddocumentationview.cpp:54 [opt]
    frame #46: libKDevPlatformDocumentation.52.dylib`StandardDocumentationPage::~StandardDocumentationPage(this=0x00007fe359350ba0) at standarddocumentationview.cpp:54 [opt]
    frame #47: QtCore`QObjectPrivate::deleteChildren(this=0x00007fe35b70fb30) at qobject.cpp:1975 [opt]
    frame #48: QtWidgets`QWidget::~QWidget(this=0x00007fe35dc3abb0) at qwidget.cpp:1694 [opt]
    frame #49: libKDevPlatformDocumentation.52.dylib`KDevelop::StandardDocumentationView::~StandardDocumentationView() [inlined] KDevelop::StandardDocumentationView::~StandardDocumentationView(this=0x00007fe35dc3abb0) at standarddocumentationview.cpp:175 [opt]
    frame #50: libKDevPlatformDocumentation.52.dylib`KDevelop::StandardDocumentationView::~StandardDocumentationView() [inlined] KDevelop::StandardDocumentationView::~StandardDocumentationView(this=0x00007fe35dc3abb0) at standarddocumentationview.cpp:175 [opt]
    frame #51: libKDevPlatformDocumentation.52.dylib`KDevelop::StandardDocumentationView::~StandardDocumentationView(this=0x00007fe35dc3abb0) at standarddocumentationview.cpp:175 [opt]
    frame #52: QtCore`QObjectPrivate::deleteChildren(this=0x00007fe3587cdbd0) at qobject.cpp:1975 [opt]
    frame #53: QtWidgets`QWidget::~QWidget(this=0x00007fe358492a00) at qwidget.cpp:1694 [opt]
    frame #54: libKDevPlatformDocumentation.52.dylib`DocumentationView::~DocumentationView() [inlined] DocumentationView::~DocumentationView(this=<unavailable>) at documentationview.h:38 [opt]
    frame #55: libKDevPlatformDocumentation.52.dylib`DocumentationView::~DocumentationView() [inlined] DocumentationView::~DocumentationView(this=<unavailable>) at documentationview.h:38 [opt]
    frame #56: libKDevPlatformDocumentation.52.dylib`DocumentationView::~DocumentationView(this=0x00007fe358492a00) at documentationview.h:38 [opt]
    frame #57: QtCore`QObjectPrivate::deleteChildren(this=0x00007fe3587b9fa0) at qobject.cpp:1975 [opt]
    frame #58: QtWidgets`QWidget::~QWidget(this=0x00007fe358b26900) at qwidget.cpp:1694 [opt]
    frame #59: QtWidgets`QMainWindow::~QMainWindow() [inlined] QMainWindow::~QMainWindow(this=0x00007fe358b26900) at qmainwindow.cpp:410 [opt]
    frame #60: QtWidgets`QMainWindow::~QMainWindow() [inlined] QMainWindow::~QMainWindow(this=0x00007fe358b26900) at qmainwindow.cpp:410 [opt]
    frame #61: QtWidgets`QMainWindow::~QMainWindow(this=0x00007fe358b26900) at qmainwindow.cpp:410 [opt]
    frame #62: QtCore`QObjectPrivate::deleteChildren(this=0x00007fe3584874a0) at qobject.cpp:1975 [opt]
    frame #63: QtWidgets`QWidget::~QWidget(this=0x00007fe358462750) at qwidget.cpp:1694 [opt]
    frame #64: libKDevPlatformSublime.52.dylib`Sublime::IdealDockWidget::~IdealDockWidget() [inlined] Sublime::IdealDockWidget::~IdealDockWidget(this=0x00007fe358462750) at idealdockwidget.cpp:79 [opt]
    frame #65: libKDevPlatformSublime.52.dylib`Sublime::IdealDockWidget::~IdealDockWidget() [inlined] Sublime::IdealDockWidget::~IdealDockWidget(this=0x00007fe358462750) at idealdockwidget.cpp:78 [opt]
    frame #66: libKDevPlatformSublime.52.dylib`Sublime::IdealDockWidget::~IdealDockWidget(this=0x00007fe358462750) at idealdockwidget.cpp:78 [opt]
    frame #67: QtCore`QObjectPrivate::deleteChildren(this=0x00007fe3526997d0) at qobject.cpp:1975 [opt]
    frame #68: QtWidgets`QWidget::~QWidget(this=0x00007fe352696d90) at qwidget.cpp:1694 [opt]
    frame #69: libKDevPlatformSublime.52.dylib`Sublime::MainWindow::~MainWindow(this=0x00007fe352696d90, vtt=<unavailable>) at mainwindow.cpp:74 [opt]
    frame #70: libKDevPlatformShell.52.dylib`KDevelop::MainWindow::~MainWindow(this=0x00007fe352696d90, vtt=<unavailable>) at mainwindow.cpp:164 [opt]
    frame #71: libKDevPlatformShell.52.dylib`KDevelop::MainWindow::~MainWindow() [inlined] KDevelop::MainWindow::~MainWindow(this=0x00007fe352696d90) at mainwindow.cpp:157 [opt]
    frame #72: libKDevPlatformShell.52.dylib`KDevelop::MainWindow::~MainWindow(this=0x00007fe352696d90) at mainwindow.cpp:157 [opt]
    frame #73: QtCore`QObject::event(QEvent*) [inlined] qDeleteInEventHandler(o=0x00007fe352696d90) at qobject.cpp:4557 [opt]
    frame #74: QtCore`QObject::event(this=0x00007fe352696d90, e=<unavailable>) at qobject.cpp:1254 [opt]
    frame #75: QtWidgets`QWidget::event(this=0x00007fe352696d90, event=0x00007fe3586e31c0) at qwidget.cpp:9220 [opt]
    frame #76: QtWidgets`QMainWindow::event(this=0x00007fe352696d90, event=0x00007fe3586e31c0) at qmainwindow.cpp:1557 [opt]
    frame #77: libKF5XmlGui.5.dylib`KMainWindow::event(this=0x00007fe352696d90, ev=0x00007fe3586e31c0) at kmainwindow.cpp:865 [opt]
    frame #78: libKF5XmlGui.5.dylib`KXmlGuiWindow::event(this=0x00007fe352696d90, ev=0x00007fe3586e31c0) at kxmlguiwindow.cpp:119 [opt]
    frame #79: QtWidgets`QApplicationPrivate::notify_helper(this=<unavailable>, receiver=0x00007fe352696d90, e=0x00007fe3586e31c0) at qapplication.cpp:3745 [opt]
    frame #80: QtWidgets`QApplication::notify(this=<unavailable>, receiver=<unavailable>, e=<unavailable>) at qapplication.cpp:3708 [opt]
    frame #81: QtCore`QCoreApplication::notifyInternal2(receiver=0x00007fe352696d90, event=0x00007fe3586e31c0) at qcoreapplication.cpp:995 [opt]
    frame #82: QtCore`QCoreApplicationPrivate::sendPostedEvents(receiver=0x0000000000000000, event_type=0, data=0x00007fe352515d40) at qcoreapplication.h:231 [opt]
    frame #83: QtCore`QCoreApplication::exec() at qcoreapplication.cpp:1289 [opt]
    frame #84: kdevelop.bin`main(argc=<unavailable>, argv=0x00007fff5de39c10) at main.cpp:919 [opt]
    frame #85: 0x00007fff906e25fd libdyld.dylib`start + 1
Comment 1 Justin Zobel 2022-11-10 08:51:51 UTC
Thank you for reporting this issue in KDE software. As it has been a while since this issue was reported, can we please ask you to see if you can reproduce the issue with a recent software version?

If you can reproduce the issue, please change the status to "REPORTED" when replying. Thank you!
Comment 2 Bug Janitor Service 2022-11-25 05:18:39 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 3 Bug Janitor Service 2022-12-10 05:15:35 UTC
This bug has been in NEEDSINFO status with no change for at least
30 days. The bug is now closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

Thank you for helping us make KDE software even better for everyone!