Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Getting segmentation fault on close of my application.



  • Hi Experts,
    I am getting segmentation fault on close of my application. I tried to debug the issue but could not see any issue. So seeking help to understand the problem.

    Background of my program:
    It is a multithreaded program which is trying to download an XML file from server in separate thread. It is working fine but when I am closing the application it is giving segfault. I have given the call stack, please take a look.

    Call stack:

    #0 0x00007ffff4ecf360 in malloc () from /lib/x86_64-linux-gnu/libc.so.6
    #1 0x00007ffff54c24cd in operator new(unsigned long) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
    #2 0x00007ffff670a186 in QMutex::QMutex (this=0x25276d0, mode=QMutex::NonRecursive)
    at thread/qmutex.cpp:124
    #3 0x00007ffff670e10d in QPostEventList::QPostEventList (this=0x25276b8) at thread/qthread_p.h:110
    #4 0x00007ffff670d0d2 in QThreadData::QThreadData (this=0x2527690, initialRefCount=1)
    at thread/qthread.cpp:81
    #5 0x00007ffff67103b0 in QThreadData::current () at thread/qthread_unix.cpp:222
    #6 0x00007ffff684a35b in QObject::QObject (this=0x25274b0, dd=..., parent=0x0) at kernel/qobject.cpp:773
    #7 0x00007ffff670da3e in QThread::QThread (this=0x25274b0, dd=..., parent=0x0) at thread/qthread.cpp:385
    #8 0x00007ffff670d479 in QAdoptedThread::QAdoptedThread (this=0x25274b0, data=0x2527340)
    at thread/qthread.cpp:137
    #9 0x00007ffff67103fd in QThreadData::current () at thread/qthread_unix.cpp:225
    #10 0x00007ffff684a35b in QObject::QObject (this=0x2527160, dd=..., parent=0x0) at kernel/qobject.cpp:773
    #11 0x00007ffff670da3e in QThread::QThread (this=0x2527160, dd=..., parent=0x0) at thread/qthread.cpp:385
    #12 0x00007ffff670d479 in QAdoptedThread::QAdoptedThread (this=0x2527160, data=0x2526ff0)
    at thread/qthread.cpp:137
    #13 0x00007ffff67103fd in QThreadData::current () at thread/qthread_unix.cpp:225
    #14 0x00007ffff684a35b in QObject::QObject (this=0x2526e10, dd=..., parent=0x0) at kernel/qobject.cpp:773
    #15 0x00007ffff670da3e in QThread::QThread (this=0x2526e10, dd=..., parent=0x0) at thread/qthread.cpp:385
    #16 0x00007ffff670d479 in QAdoptedThread::QAdoptedThread (this=0x2526e10, data=0x2526ca0)
    at thread/qthread.cpp:137
    #17 0x00007ffff67103fd in QThreadData::current () at thread/qthread_unix.cpp:225
    #18 0x00007ffff684a35b in QObject::QObject (this=0x2526ac0, dd=..., parent=0x0) at kernel/qobject.cpp:773
    #19 0x00007ffff670da3e in QThread::QThread (this=0x2526ac0, dd=..., parent=0x0) at thread/qthread.cpp:385
    #20 0x00007ffff670d479 in QAdoptedThread::QAdoptedThread (this=0x2526ac0, data=0x2526950)
    at thread/qthread.cpp:137
    #21 0x00007ffff67103fd in QThreadData::current () at thread/qthread_unix.cpp:225
    #22 0x00007ffff684a35b in QObject::QObject (this=0x2526770, dd=..., parent=0x0) at kernel/qobject.cpp:773
    #23 0x00007ffff670da3e in QThread::QThread (this=0x2526770, dd=..., parent=0x0) at thread/qthread.cpp:385
    #24 0x00007ffff670d479 in QAdoptedThread::QAdoptedThread (this=0x2526770, data=0x2526600)
    at thread/qthread.cpp:137
    #25 0x00007ffff67103fd in QThreadData::current () at thread/qthread_unix.cpp:225
    #26 0x00007ffff684a35b in QObject::QObject (this=0x2526420, dd=..., parent=0x0) at kernel/qobject.cpp:773
    #27 0x00007ffff670da3e in QThread::QThread (this=0x2526420, dd=..., parent=0x0) at thread/qthread.cpp:385
    #28 0x00007ffff670d479 in QAdoptedThread::QAdoptedThread (this=0x2526420, data=0x25262b0)
    at thread/qthread.cpp:137
    #29 0x00007ffff67103fd in QThreadData::current () at thread/qthread_unix.cpp:225
    #30 0x00007ffff684a35b in QObject::QObject (this=0x25260d0, dd=..., parent=0x0) at kernel/qobject.cpp:773
    #31 0x00007ffff670da3e in QThread::QThread (this=0x25260d0, dd=..., parent=0x0) at thread/qthread.cpp:385
    #32 0x00007ffff670d479 in QAdoptedThread::QAdoptedThread (this=0x25260d0, data=0x2525f60)



  • I noticed, this issue comes only when I close the application while threads are still running. Once thread execution is over issue does not come. It looks like some how I have to stop the thread and remove the event loop so that no signal/slots gets called after deletion of main object.

    Please let me know if my approach is correct and hwo to achieve the same....

    thanks in advance.


Log in to reply