Was this commited?<br><br><div class="gmail_quote">On Sun, May 24, 2009 at 5:23 PM, Peter Oberndorfer <span dir="ltr"><<a href="mailto:kumbayo84@arcor.de">kumbayo84@arcor.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">On Sonntag 24 Mai 2009, David Nolden wrote:<br>
> Am Samstag 23 Mai 2009 23:18:05 schrieb Peter Oberndorfer:<br>
> > vm.insert CMAKE_CURRENT_SOURCE_DIR is needed since 953842<br>
> > where a Q_ASSERT was added to make sure CMAKE_CURRENT_SOURCE_DIR is defined<br>
> ><br>
> > addDocumentChain in testUses is needed to avoid assert indexed.data() ==<br>
> > context in removeDocumentChain that fires when a addDocumentChain was never<br>
> > called<br>
> ><br>
> > addDocumentChain + removeDocumentChain testDUChainWalk<br>
> > are needed to avoid assert m_recursiveImports.isEmpty()<br>
> > in TopDUContextLocalPrivate::clearImportedContextsRecursively<br>
> > ---<br>
> ><br>
> > I am no duchain/cmake expert, so please review carefully.<br>
> > Also i don't know if addDocumentChain + removeDocumentChain<br>
> > is the right cure for the m_recursiveImports.isEmpty() assert.<br>
> Your duchain fixes are correct. A top-context is only partially functional<br>
> when it was not added using addDocumentChain.<br>
><br>
> Greetings, David<br>
><br>
</div>Good,<br>
while testing my changes for cmakeduchaintest i found another problem,<br>
which happend to me several times during shutdown of kdevelop after normal work.<br>
But it can be reproduced easier with this test.<br>
<br>
It manifests itself in a QMutex::lock: mutex lock failure<br>
<br>
KDevelop::shouldDoDUChainReferenceCountingInternal can access the mutex in the already destructed RefCountDecider.<br>
I also attached the part of the valgrind log.<br>
<br>
The attached test patch 1 makes this obvious by adding a assert.<br>
Attached test patch 2 "solves" this by never destructing RefCountDecider.<br>
You have another idea how to solve this properly?<br>
(My hack is prbably not thread safe)<br>
<br>
Greetings Peter<br>
<br>
==24232==<br>
==24232== Invalid read of size 1<br>
==24232==    at 0x4088B7E: QMutex::lock() (qmutex.cpp:152)<br>
==24232==    by 0x42E2318: KDevelop::shouldDoDUChainReferenceCountingInternal(void*) (referencecounting.cpp:57)<br>
==24232==    by 0x4369C62: KDevelop::AppendedList<true, KDevelop::IndexedTypeIdentifier>::free(KDevelop::IndexedTypeIdentifier*) (appendedlist_static.h:94)<br>
==24232==    by 0x437286E: KDevelop::IdentifierPrivate<true>::~IdentifierPrivate() (identifier.cpp:45)<br>
==24232==    by 0x4363CDA: KDevelop::Identifier::~Identifier() (identifier.cpp:301)<br>
==24232==    by 0x58DAE0B: __cxa_finalize (in /lib/<a href="http://libc-2.8.so" target="_blank">libc-2.8.so</a>)<br>
==24232==    by 0x42BA2A8: ??? (in /home/kde-devel/kde/lib/libkdevplatformlanguage.so.1.0.0)<br>
==24232==    by 0x44422B3: ??? (in /home/kde-devel/kde/lib/libkdevplatformlanguage.so.1.0.0)<br>
==24232==    by 0x400E62D: _dl_fini (in /lib/<a href="http://ld-2.8.so" target="_blank">ld-2.8.so</a>)<br>
==24232==    by 0x58DAB0B: exit (in /lib/<a href="http://libc-2.8.so" target="_blank">libc-2.8.so</a>)<br>
==24232==    by 0x58C4613: (below main) (in /lib/<a href="http://libc-2.8.so" target="_blank">libc-2.8.so</a>)<br>
==24232==  Address 0x6680920 is 0 bytes inside a block of size 96 free'd<br>
==24232==    at 0x40235AC: operator delete(void*) (vg_replace_malloc.c:313)<br>
==24232==    by 0x4088E24: QMutex::~QMutex() (qmutex.cpp:134)<br>
==24232==    by 0x42E312E: RefCountDecider::~RefCountDecider() (referencecounting.cpp:37)<br>
==24232==    by 0x58DAB0B: exit (in /lib/<a href="http://libc-2.8.so" target="_blank">libc-2.8.so</a>)<br>
==24232==    by 0x58C4613: (below main) (in /lib/<a href="http://libc-2.8.so" target="_blank">libc-2.8.so</a>)<br>
<br>
<br>_______________________________________________<br>
KDevelop-devel mailing list<br>
<a href="mailto:KDevelop-devel@kdevelop.org">KDevelop-devel@kdevelop.org</a><br>
<a href="https://barney.cs.uni-potsdam.de/mailman/listinfo/kdevelop-devel" target="_blank">https://barney.cs.uni-potsdam.de/mailman/listinfo/kdevelop-devel</a><br>
<br></blockquote></div><br>