https://bugs.kde.org/show_bug.cgi?id=329246

Igor Kushnir <igor...@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
      Latest Commit|                            |https://invent.kde.org/kdev
                   |                            |elop/kdevelop/commit/103ab0
                   |                            |be11f659cf52d86a5c01d749b70
                   |                            |989091b
         Resolution|---                         |FIXED
   Version Fixed In|                            |5.6.1

--- Comment #6 from Igor Kushnir <igor...@gmail.com> ---
Git commit 103ab0be11f659cf52d86a5c01d749b70989091b by Igor Kushnir.
Committed on 07/10/2020 at 10:26.
Pushed by igorkushnir into branch '5.6'.

Kill CTestFindJob when its project is destroyed

When a user closes a project while its associated CTestFindJob is still
working, the job is not notified and keeps running. After that, when
BackgroundParser eventually parses all documents requested by the job,
the job calls TestController::addTestSuite(). Inside this call the
CTestSuite::project() pointer is dereferenced in
TestView::addTestSuite() => TestView::itemForProject(), which causes a
segmentation fault.

Ideally all associated CTestFindJob-s should be killed just before or
just after a project is closed to revert their no longer useful requests
to BackgroundParser as soon as possible. However, reliably detecting
that the project is no longer open is not straightforward, especially if
the project opening is aborted or the project is closed even before a
CTestFindJob is created. My implementation of such a proper fix is
intertwined with several other CTest-, TestController- and
TestView-related fixes. The combined fix will be so large that it won't
fit into the 5.6 branch. So this commit implements a simple temporary
workaround for the fairly easy to trigger crash: check if the project is
destroyed in CTestFindJob::updateReady() and kill the job if this is the
case.
FIXED-IN: 5.6.1

M  +7    -0    plugins/cmake/testing/ctestfindjob.cpp
M  +2    -1    plugins/cmake/testing/ctestsuite.h

https://invent.kde.org/kdevelop/kdevelop/commit/103ab0be11f659cf52d86a5c01d749b70989091b

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to