QtCore,QMutex类,锁定函数 - 堆栈溢出失败

时间:2015-04-14 03:59:04

标签: c++ multithreading qt stack-overflow

我遇到了类似帖子的奇怪的stackoverflow崩溃: here

QMutex试图以递归方式锁定自身然后导致崩溃...... 调用堆栈是这样的:

                ...(more repeat)
                Qt5Cored.dll!QBasicMutex::lockInternal(int timeout) Line 428     
                Qt5Cored.dll!QBasicMutex::lockInternal() Line 409    
                Qt5Cored.dll!QMutex::lock() Line 218     
                Qt5Cored.dll!QMutexLocker::QMutexLocker(QBasicMutex * m) Line 129    
                Qt5Cored.dll!A0x3737355e::`anonymous namespace'::Q_QGS_freelist::innerFunction() Line 566    
                Qt5Cored.dll!QGlobalStatic<QFreeList<QMutexPrivate,`anonymous namespace'::FreeListConstants>,&A0x3737355e::`anonymous namespace'::Q_QGS_freelist::innerFunction,A0x3737355e::A0x3737355e::Q_QGS_freelist::guard>::operator()() Line 129  
                Qt5Cored.dll!QMutexPrivate::allocate() Line 571  
                Qt5Cored.dll!QBasicMutex::lockInternal(int timeout) Line 428     
                Qt5Cored.dll!QBasicMutex::lockInternal() Line 409    
                Qt5Cored.dll!QMutex::lock() Line 218     
                Qt5Cored.dll!QMutexLocker::QMutexLocker(QBasicMutex * m) Line 129    
                Qt5Cored.dll!A0x3737355e::`anonymous namespace'::Q_QGS_freelist::innerFunction() Line 566    
                Qt5Cored.dll!QGlobalStatic<QFreeList<QMutexPrivate,`anonymous namespace'::FreeListConstants>,&A0x3737355e::`anonymous namespace'::Q_QGS_freelist::innerFunction,A0x3737355e::A0x3737355e::Q_QGS_freelist::guard>::operator()() Line 129  
                Qt5Cored.dll!QMutexPrivate::allocate() Line 571  
                Qt5Cored.dll!QBasicMutex::lockInternal(int timeout) Line 428     
                Qt5Cored.dll!QBasicMutex::lockInternal() Line 409    
                Qt5Cored.dll!QMutex::lock() Line 218     
                Qt5Cored.dll!QMutexLocker::QMutexLocker(QBasicMutex * m) Line 129    
                Qt5Cored.dll!A0x3737355e::`anonymous namespace'::Q_QGS_freelist::innerFunction() Line 566    
                Qt5Cored.dll!QGlobalStatic<QFreeList<QMutexPrivate,`anonymous namespace'::FreeListConstants>,&A0x3737355e::`anonymous namespace'::Q_QGS_freelist::innerFunction,A0x3737355e::A0x3737355e::Q_QGS_freelist::guard>::operator()() Line 129  
                Qt5Cored.dll!QMutexPrivate::allocate() Line 571  
                The maximum number of stack frames supported by Visual Studio has been exceeded.

我在Windows 8.1系统上使用qt 5.4.1。

由于已超出调用堆栈的最大帧数,我如何检查哪个函数/调用启动此无限递归?

1 个答案:

答案 0 :(得分:0)

Bugreport可用。我希望他们能尽快解决。