Crash after requesting context menu (after reopening the project)
Manuel Breugelmans
mbr.nxi at gmail.com
Wed Jul 30 23:59:24 UTC 2008
On Wednesday 30 July 2008 00:43:17 Andreas Pakulat wrote:
> Hmmm... I can't see how this could happen. Granted the project pointer
> itself isn't deleted until the event loop runs again after closing it,
> but the project items are being deleted properly. So the project tree
> has to have the new items and their project() pointer needs to be
> "proper".
>
> You should be able to debug this by simply printing out the pointer of
> the project in projectcontroller::closeProject() before its deleted and
> then also in veritas coverageplugin before the crash line. Those two
> pointers should be different. If they are, there must be a problem
> elsehwere.
>
I've given this a long hard look and spotted the culprit. Not dvcs nor veritas
but some obscure plugin loading code in projectcontroller [ the person that
introduced this now owes +1 beer to Evgeniy & me :) ]
I deduced this with the following minimal test cases:
*/ start kdev4 >> load project >> reopen project [no close, just recent-
>project] >> context menu >> crash
*/ start kdev4 >> load project >> close project >> load project >> context
menu >> no crash
*/ start kdev4 >> load cmake project >> load other cmake project >> reload
cmake project >> context on reloaded >> no crash
*/ start kdev4 >> load cmake project >> load make project >> reload cmake
project >> context menu reloaded >> crash
On a reopen project ProjectController unloads the KDevCmakeBuilder plugin (IF
no other open projects use it) then immediatly loads it again, which results
in that segfault.
Attached is a patch which:
1. Fixes this bug, by not unloading plugins when reloading a project which is
redundant anyway
2. Refactor the ProjectController->closeProject() member as this had started
to rot
3. Remove faulty signals from ProjectController, which are also present in
IProjectController
4. Add a unit test for ProjectController
@Powerfox: could you apply and confirm that this indeed gets rid of the problem
+ run that test.
Manuel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kdev_projectcontroller.patch
Type: text/x-patch
Size: 16507 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20080731/0bceb1f3/attachment.patch>
More information about the KDevelop-devel
mailing list