Kdevelop termination problem unde suse 9.0 amd64 linux edition
mario.tuerschmann at vodafone.de
Sat Feb 28 14:45:07 UTC 2004
i found a problem in the class BackgroundParser (file backgroundparser.cpp). If the function BackgroundParser::close() is called from the destructor of the class CppSupportPart, it may happen that the QT-thread causes a segmentation fault. This is possible because the function call m_backgroundParser->wait() returns before the QT-thread terminates. In that case the QT-thread uses BackgroundParser object specific data that are no longer available (see BackgroundParser::run()). A solution for that problem is to change the following functions in languages/cpp/cppsupportpart.cpp
delete( m_driver );
m_driver = 0;
if( m_backgroundParser )
// not really a wait function ??? ;-}}
m_backgroundParser = 0;
and in languages/cpp/backgroundparser.cpp
QMutexLocker locker( &m_mutex );
m_close = true;
// safer termination
This way guarantees that the thread can use the object data and terminates before the destructor is called. It works perfect on my 64 Bit linux (amd64) so i guess the QT - libraries may have a different behaviour on particular systems.
It would be great if i get r/w - access to the cvs database to remove the problem.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the KDevelop-devel