Qt多线程应用程序段错误

时间:2016-01-20 13:36:02

标签: c++ multithreading qt

我有一个Qt应用程序,我开始只在发布模式下获得SIGSEGV ,当我构建并与调试符号链接时,我得到了一个类似的调用堆栈这样:

0 ntdll!LdrFindResourceEx_U
1 ntdll!ZwWriteRequestData
2 KERNELBASE!InterlockExchange
3 ??
4 ??
5 WaitForMultipleObjectsEx
6 WaitForMultipleObjects
7 qt_adopted_thread_watcher_function
8 ??

在与主线程不同的线程中。

在处理繁重的循环中调用QApplication::restoreOverrideCursor()QApplication::processEvents()之后,通常会发生这种情况。

我经常和之后说,因为在极少数情况下它不会发生或者它不会立即发生,但是几秒钟之后。

我没有在代码之前的那个地方开始任何QThreads,所以我不知道是什么导致它。

这是我在 Qt开源中找到的qt_adopted_thread_watcher_function的说明:

This function loops and waits for native adopted threads to finish.
When this happens it derefs the QThreadData for the adopted thread to make sure it gets cleaned up properly

我没有手动启动任何QThreads,为什么会发生这种情况?

0 个答案:

没有答案