Windows 上 Qt GUI 事件循环的奇怪冻结案例

Strange freezing cases of Qt GUI event loop on Windows

我试着在这里问问有没有人遇到过这样的问题

有时,我遇到一种情况:我通过 cmd.exe 在 Windows 上启动我的 Qt 应用程序(在调试模式下,但我不确定它是否重要)然后我开始工作使用它,然后我停止使用它一段时间。然后我 return 它变得专注,但我很少遇到这种情况:该应用程序是 Not Responding,即使我没有任何逻辑让它对 return 变得专注做出反应。然后我等了又等,注意到发生了,然后我按下 cmd.exe 中的任意键,我的应用程序没有被杀死,而是突然醒来并继续工作,然后我再也没有遇到任何问题。

可能是什么问题?在 Linux 我没有遇到这样的问题。我问是因为我无法追踪问题,因为这种情况并不经常发生。另外,我对Windows不是很熟悉。如果它是 Linux 我会使用 gdp -p 并尝试查看应用程序挂起的位置。但是我可以在 Windows 上做什么?关于如何抓住这个有什么建议吗?

更新:我可以按 cmd.exe 中的任意键来解冻程序。

更新:

它似乎在我的一个 debug-printfs 上冻结了:

STACK_TEXT:  
: ntdll!NtWriteFile+0x14
: KERNELBASE!WriteFile+0x76
!write_text_ansi_nolock+0x183
!_write_nolock+0x451
!_write_internal+0x377
!__acrt_stdio_flush_nolock+0xc4
!__acrt_stdio_end_temporary_buffering_nolock+0x54
!__acrt_stdio_temporary_buffering_guard::~__acrt_stdio_temporary_buffering_guard+0x28
!<lambda_303760bc4008a2b3ec4768a30b06a80c>::operator()+0x104
!__crt_seh_guarded_call<int>::operator()<<lambda_d854c62834386a3b23916ad6dae2782d>,<lambda_303760bc4008a2b3ec4768a30b06a80c> &,<lambda_4780a7ea4f8cbd2590aec34bd14e2bbf> >+0x35
!__acrt_lock_stream_and_call<<lambda_303760bc4008a2b3ec4768a30b06a80c> >+0x58
!common_vfprintf<__crt_stdio_output::standard_base,char>+0x21a
!__stdio_common_vfprintf+0x5c
!_vfprintf_l+0x3f
!printf+0x58
! MyClass::myfunc -- that executes my handler of the button pressed (which freezes)

为什么会这样?我的意思是它只是一个 printf 写入 cmd。

这是我的问题的答案:

https://whosebug.com/a/33883532/4781940

当冻结发生时,我真的有那个 Select Command Prompt 标题。