Kdevelop termination problem unde suse 9.0 amd64 linux edition

Vodafone mario.tuerschmann at vodafone.de
Sat Feb 28 14:45:07 UTC 2004

Dear all,

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 

    if (project())

    delete( m_driver );
    m_driver = 0;
    if( m_backgroundParser )
        // not really a wait function ??? ;-}}
        delete m_backgroundParser;
        m_backgroundParser = 0;
and in languages/cpp/backgroundparser.cpp

void BackgroundParser::close()
    QMutexLocker locker( &m_mutex );
    m_close = true;

    // safer termination
    while (running())
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.

Best regards
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20040228/0a95d5a5/attachment.html>

More information about the KDevelop-devel mailing list