D9858: dont crash when cancelling process
Sven Brauch
noreply at phabricator.kde.org
Sat Jan 13 15:41:17 UTC 2018
brauch created this revision.
brauch added reviewers: apol, KDevelop.
Restricted Application added a subscriber: kdevelop-devel.
brauch requested review of this revision.
REVISION SUMMARY
See: https://forum.kde.org/viewtopic.php?f=218&t=129389
Not sure if this is the right fix, I didn't really look into it in depth ... maybe the process should not be deleted that early ... Aleix?
This is the valgrind output, process is already deleted when the debug is called:
11028== Invalid read of size 8
------------------------------
11028== at 0xA79EAF4: KProcess::program() const (in /usr/lib/libKF5CoreAddons.so.5.41.0)
-------------------------------------------------------------------------------------------
11028== by 0x4F80A0D: operator() (runtimecontroller.cpp:44)
--------------------------------------------------------------
11028== by 0x4F80A0D: call (qobjectdefs_impl.h:130)
------------------------------------------------------
11028== by 0x4F80A0D: call<QtPrivate::List<QProcess::ProcessError>, void> (qobjectdefs_impl.h:240)
-----------------------------------------------------------------------------------------------------
11028== by 0x4F80A0D: QtPrivate::QFunctorSlotObject<IdentityRuntime::startProcess(KProcess*) const::{lambda(QProcess::ProcessError)#1}, 1, QtPrivate::List<QProcess::ProcessError>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (qobjectdefs_impl.h:423)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
11028== by 0xBCE5B2E: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQt5Core.so.5.10.0)
-------------------------------------------------------------------------------------------------------------
11028== by 0xBC2E551: QProcess::errorOccurred(QProcess::ProcessError) (in /usr/lib/libQt5Core.so.5.10.0)
-----------------------------------------------------------------------------------------------------------
11028== by 0xBC35590: ??? (in /usr/lib/libQt5Core.so.5.10.0)
---------------------------------------------------------------
11028== by 0xBC3A834: ??? (in /usr/lib/libQt5Core.so.5.10.0)
---------------------------------------------------------------
11028== by 0xBC2FD6B: QProcess::waitForFinished(int) (in /usr/lib/libQt5Core.so.5.10.0)
------------------------------------------------------------------------------------------
11028== by 0xBC306F1: QProcess::~QProcess() (in /usr/lib/libQt5Core.so.5.10.0)
---------------------------------------------------------------------------------
11028== by 0xA79E809: KProcess::~KProcess() (in /usr/lib/libKF5CoreAddons.so.5.41.0)
---------------------------------------------------------------------------------------
11028== by 0xBCE354C: QObjectPrivate::deleteChildren() (in /usr/lib/libQt5Core.so.5.10.0)
--------------------------------------------------------------------------------------------
11028== by 0xBCED17B: QObject::~QObject() (in /usr/lib/libQt5Core.so.5.10.0)
-------------------------------------------------------------------------------
11028== by 0x545C31C2: ~ScriptAppJob (scriptappjob.h:38)
-----------------------------------------------------------
11028== by 0x545C31C2: ScriptAppJob::~ScriptAppJob() (scriptappjob.h:38)
---------------------------------------------------------------------------
11028== by 0xBCE6470: QObject::event(QEvent*) (in /usr/lib/libQt5Core.so.5.10.0)
-----------------------------------------------------------------------------------
11028== by 0xAB53E3B: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQt5Widgets.so.5.10.0)
--------------------------------------------------------------------------------------------------------------------
11028== by 0xAB5B815: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQt5Widgets.so.5.10.0)
------------------------------------------------------------------------------------------------------
11028== by 0xBCB51DF: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/libQt5Core.so.5.10.0)
----------------------------------------------------------------------------------------------------------------
11028== by 0xBCB7E45: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/libQt5Core.so.5.10.0)
----------------------------------------------------------------------------------------------------------------------------------
11028== by 0xBD120A3: ??? (in /usr/lib/libQt5Core.so.5.10.0)
---------------------------------------------------------------
11028== by 0x1554C26F: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.5400.0)
---------------------------------------------------------------------------------------
11028== by 0x1554DF68: ??? (in /usr/lib/libglib-2.0.so.0.5400.0)
-------------------------------------------------------------------
11028== by 0x1554DFAD: g_main_context_iteration (in /usr/lib/libglib-2.0.so.0.5400.0)
----------------------------------------------------------------------------------------
11028== by 0xBD11690: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/libQt5Core.so.5.10.0)
--------------------------------------------------------------------------------------------------------------------------------------
11028== by 0x31152151: ??? (in /usr/lib/libQt5XcbQpa.so.5.10.0)
------------------------------------------------------------------
11028== by 0xBCB382A: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/libQt5Core.so.5.10.0)
-------------------------------------------------------------------------------------------------------------------
11028== by 0xBCBCB17: QCoreApplication::exec() (in /usr/lib/libQt5Core.so.5.10.0)
------------------------------------------------------------------------------------
11028== by 0x114B9A: main (main.cpp:824)
-------------------------------------------
11028== Address 0x677edbf0 is 0 bytes inside a block of size 32 free'd
-----------------------------------------------------------------------
11028== at 0x4C2E64B: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
--------------------------------------------------------------------------------------------------------
11028== by 0xA79E7ED: KProcess::~KProcess() (in /usr/lib/libKF5CoreAddons.so.5.41.0)
---------------------------------------------------------------------------------------
11028== by 0xA79E809: KProcess::~KProcess() (in /usr/lib/libKF5CoreAddons.so.5.41.0)
---------------------------------------------------------------------------------------
11028== by 0xBCE354C: QObjectPrivate::deleteChildren() (in /usr/lib/libQt5Core.so.5.10.0)
--------------------------------------------------------------------------------------------
11028== by 0xBCED17B: QObject::~QObject() (in /usr/lib/libQt5Core.so.5.10.0)
-------------------------------------------------------------------------------
11028== by 0x545C31C2: ~ScriptAppJob (scriptappjob.h:38)
-----------------------------------------------------------
11028== by 0x545C31C2: ScriptAppJob::~ScriptAppJob() (scriptappjob.h:38)
---------------------------------------------------------------------------
11028== by 0xBCE6470: QObject::event(QEvent*) (in /usr/lib/libQt5Core.so.5.10.0)
-----------------------------------------------------------------------------------
11028== by 0xAB53E3B: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQt5Widgets.so.5.10.0)
--------------------------------------------------------------------------------------------------------------------
11028== by 0xAB5B815: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQt5Widgets.so.5.10.0)
------------------------------------------------------------------------------------------------------
11028== by 0xBCB51DF: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/libQt5Core.so.5.10.0)
----------------------------------------------------------------------------------------------------------------
11028== by 0xBCB7E45: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/libQt5Core.so.5.10.0)
----------------------------------------------------------------------------------------------------------------------------------
11028== by 0xBD120A3: ??? (in /usr/lib/libQt5Core.so.5.10.0)
---------------------------------------------------------------
11028== by 0x1554C26F: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.5400.0)
---------------------------------------------------------------------------------------
11028== by 0x1554DF68: ??? (in /usr/lib/libglib-2.0.so.0.5400.0)
-------------------------------------------------------------------
11028== by 0x1554DFAD: g_main_context_iteration (in /usr/lib/libglib-2.0.so.0.5400.0)
----------------------------------------------------------------------------------------
11028== by 0xBD11690: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/libQt5Core.so.5.10.0)
--------------------------------------------------------------------------------------------------------------------------------------
11028== by 0x31152151: ??? (in /usr/lib/libQt5XcbQpa.so.5.10.0)
------------------------------------------------------------------
11028== by 0xBCB382A: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/libQt5Core.so.5.10.0)
-------------------------------------------------------------------------------------------------------------------
11028== by 0xBCBCB17: QCoreApplication::exec() (in /usr/lib/libQt5Core.so.5.10.0)
------------------------------------------------------------------------------------
11028== by 0x114B9A: main (main.cpp:824)
-------------------------------------------
11028== Block was alloc'd at
-----------------------------
11028== at 0x4C2D52F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
-------------------------------------------------------------------------------------------------------------
11028== by 0xA79E467: KProcess::KProcess(QObject*) (in /usr/lib/libKF5CoreAddons.so.5.41.0)
----------------------------------------------------------------------------------------------
11028== by 0x545C065B: ScriptAppJob::ScriptAppJob(ExecuteScriptPlugin*, KDevelop::ILaunchConfiguration*) (scriptappjob.cpp:51)
---------------------------------------------------------------------------------------------------------------------------------
11028== by 0x545B9D66: ScriptAppLauncher::start(QString const&, KDevelop::ILaunchConfiguration*) (scriptappconfig.cpp:166)
-----------------------------------------------------------------------------------------------------------------------------
11028== by 0x4F2942F: KDevelop::RunController::execute(QString const&, KDevelop::ILaunchConfiguration*) (runcontroller.cpp:425)
----------------------------------------------------------------------------------------------------------------------------------
11028== by 0x4F2AA78: KDevelop::RunController::executeDefaultLaunch(QString const&) (runcontroller.cpp:878)
--------------------------------------------------------------------------------------------------------------
11028== by 0x4F28B18: KDevelop::RunController::slotExecute() (runcontroller.cpp:561)
---------------------------------------------------------------------------------------
11028== by 0xBCE5B2E: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQt5Core.so.5.10.0)
-------------------------------------------------------------------------------------------------------------
11028== by 0xAB4D382: QAction::triggered(bool) (in /usr/lib/libQt5Widgets.so.5.10.0)
---------------------------------------------------------------------------------------
11028== by 0xAB4FC05: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQt5Widgets.so.5.10.0)
------------------------------------------------------------------------------------------------------
11028== by 0xACD5C34: ??? (in /usr/lib/libQt5Widgets.so.5.10.0)
------------------------------------------------------------------
11028== by 0xACDD2FB: ??? (in /usr/lib/libQt5Widgets.so.5.10.0)
------------------------------------------------------------------
11028== by 0xACDE163: QMenu::mouseReleaseEvent(QMouseEvent*) (in /usr/lib/libQt5Widgets.so.5.10.0)
-----------------------------------------------------------------------------------------------------
11028== by 0xAB93E37: QWidget::event(QEvent*) (in /usr/lib/libQt5Widgets.so.5.10.0)
--------------------------------------------------------------------------------------
11028== by 0xACE049B: QMenu::event(QEvent*) (in /usr/lib/libQt5Widgets.so.5.10.0)
------------------------------------------------------------------------------------
11028== by 0xAB53E3B: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQt5Widgets.so.5.10.0)
--------------------------------------------------------------------------------------------------------------------
11028== by 0xAB5BD90: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQt5Widgets.so.5.10.0)
------------------------------------------------------------------------------------------------------
11028== by 0xBCB51DF: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/libQt5Core.so.5.10.0)
----------------------------------------------------------------------------------------------------------------
11028== by 0xAB5AD19: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) (in /usr/lib/libQt5Widgets.so.5.10.0)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
11028== by 0xABAEFB6: ??? (in /usr/lib/libQt5Widgets.so.5.10.0)
------------------------------------------------------------------
11028== by 0xABB199F: ??? (in /usr/lib/libQt5Widgets.so.5.10.0)
------------------------------------------------------------------
11028== by 0xAB53E3B: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQt5Widgets.so.5.10.0)
--------------------------------------------------------------------------------------------------------------------
11028== by 0xAB5B815: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQt5Widgets.so.5.10.0)
------------------------------------------------------------------------------------------------------
11028== by 0xBCB51DF: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/libQt5Core.so.5.10.0)
----------------------------------------------------------------------------------------------------------------
11028== by 0xB361633: QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) (in /usr/lib/libQt5Gui.so.5.10.0)
------------------------------------------------------------------------------------------------------------------------------------------------
11028== by 0xB363185: QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) (in /usr/lib/libQt5Gui.so.5.10.0)
--------------------------------------------------------------------------------------------------------------------------------------------------------------
11028== by 0xB33ABBB: QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/libQt5Gui.so.5.10.0)
------------------------------------------------------------------------------------------------------------------------------------------------
11028== by 0x3115215C: ??? (in /usr/lib/libQt5XcbQpa.so.5.10.0)
------------------------------------------------------------------
11028== by 0xBCB382A: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/libQt5Core.so.5.10.0)
-------------------------------------------------------------------------------------------------------------------
11028== by 0xBCBCB17: QCoreApplication::exec() (in /usr/lib/libQt5Core.so.5.10.0)
------------------------------------------------------------------------------------
11028
-----
REPOSITORY
R32 KDevelop
REVISION DETAIL
https://phabricator.kde.org/D9858
AFFECTED FILES
kdevplatform/shell/runtimecontroller.cpp
To: brauch, apol, #kdevelop
Cc: kdevelop-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20180113/02ac5029/attachment-0001.html>
More information about the KDevelop-devel
mailing list