Qt 4.8.4退出时Windows Vista上的应用程序崩溃
我有一个Qt应用程序,在Windows Vista机器上退出时会间歇性崩溃(它在Mac和Windows XP上运行良好,需要在其他Windows版本上尝试更多)。我在退出时进行QApplication清理,并在崩溃时获得以下堆栈跟踪。如果有人知道我可能做错了什么,请告诉我Qt 4.8.4退出时Windows Vista上的应用程序崩溃,qt,windows-vista,stack-trace,segmentation-fault,Qt,Windows Vista,Stack Trace,Segmentation Fault,我有一个Qt应用程序,在Windows Vista机器上退出时会间歇性崩溃(它在Mac和Windows XP上运行良好,需要在其他Windows版本上尝试更多)。我在退出时进行QApplication清理,并在崩溃时获得以下堆栈跟踪。如果有人知道我可能做错了什么,请告诉我 Program received signal SIGSEGV, Segmentation fault. [Switching to thread 876.0x15f0] 0x69dfb912 in QEventDispatc
Program received signal SIGSEGV, Segmentation fault.
[Switching to thread 876.0x15f0]
0x69dfb912 in QEventDispatcherWin32Private::unregisterTimer (this=0x14cdf9b8,
t=0x1a1f6868, closingDown=true) at kernel/qeventdispatcher_win.cpp:620
(gdb) bt
#0 0x69dfb912 in QEventDispatcherWin32Private::unregisterTimer (
this=0x14cdf9b8, t=0x1a1f6868, closingDown=true)
at kernel/qeventdispatcher_win.cpp:620
#1 0x69dfd479 in QEventDispatcherWin32::closingDown (this=0x14cdf998)
at kernel/qeventdispatcher_win.cpp:1115
#2 0x69cd7ff2 in QThreadPrivate::finish (arg=0x14cddb48, lockAnyway=true)
at thread/qthread_win.cpp:376
#3 0x69cd7ec8 in QThreadPrivate::start (arg=0x14cddb48)
at thread/qthread_win.cpp:348
#4 0x766f2599 in wcstombs () from C:\Windows\system32\msvcrt.dll
#5 0x766f26b3 in msvcrt!_beginthreadex () from C:\Windows\system32\msvcrt.dll
#6 0x7624d309 in KERNEL32!AcquireSRWLockExclusive ()
from C:\Windows\system32\kernel32.dll
#7 0x774b16c3 in ntdll!RtlInitializeNtUserPfn ()
from C:\Windows\system32\ntdll.dll
#8 0x774b1696 in ntdll!RtlInitializeNtUserPfn ()
from C:\Windows\system32\ntdll.dll
#9 0x00000000 in ?? ()
你有使用定时器的线程吗?如果您提供应用程序的调试输出,这也会很有帮助。您是否主动删除了交给Qt处理的任何对象?Qt拥有您传递给它的大多数元素的所有权(即小部件子项等)。另一个原因可能是指针未初始化。是的,我正在其他线程中使用计时器。但我在线结束前把它们清理干净。但我没有看到任何调试/致命/警告消息(通过qDebug或类似工具)被打印出来。