平台:Windows xp 编译器:vs2008
应用程序启动后,当我单击ui时,应用程序挂起,使用率为100%:
所以我试图找到哪个线程使这个挂起,所以我冻结了主线程,然后应用程序挂起停止。 在调查主线程大部分时间挂起CallWindowProc方法。
LRESULT CWnd::DefWindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam)
{
if (m_pfnSuper != NULL)
return ::CallWindowProc(m_pfnSuper, m_hWnd, nMsg, wParam, lParam);
WNDPROC pfnWndProc;
if ((pfnWndProc = *GetSuperWndProcAddr()) == NULL)
return ::DefWindowProc(m_hWnd, nMsg, wParam, lParam);
else
return ::CallWindowProc(pfnWndProc, m_hWnd, nMsg, wParam, lParam);
}
请帮我解决这个问题。
主线程调用堆栈
0012f958 78a3e57e mfc90u!AfxCallWndProc+0xf2
0012f97c 78a3c234 mfc90u!AfxWndProc+0x37
0012f9c4 7e418734 mfc90u!AfxWndProcBase+0x56
0012f9f0 7e418816 USER32!InternalCallWinProc+0x28
0012fa58 7e42927b USER32!UserCallWinProcCheckWow+0x150
0012fa94 7e4292e3 USER32!SendMessageWorker+0x4a5
0012fab4 7e424c99 USER32!SendMessageW+0x7f
0012fad8 7e424cef USER32!xxxRemoveDefaultButton+0x46
0012faf0 7e4243da USER32!xxxSaveDlgFocus+0x3e
0012fb1c 7e423d5c USER32!DefDlgProcWorker+0x2f5
0012fb38 7e418734 USER32!DefDlgProcW+0x22
0012fb64 7e418816 USER32!InternalCallWinProc+0x28
0012fbcc 7e42a013 USER32!UserCallWinProcCheckWow+0x150
0012fbfc 7e42a039 USER32!CallWindowProcAorW+0x98
0012fc1c 78a3edcb USER32!CallWindowProcW+0x1b
0012fc3c 78a3f6e3 mfc90u!CWnd::DefWindowProcW+0x44
0012fc58 78a3e2f2 mfc90u!CWnd::WindowProc+0x3b
0012fcc0 78a3e57e mfc90u!AfxCallWndProc+0xa3
0012fce4 78a3c234 mfc90u!AfxWndProc+0x37
0012fd2c 7e418734 mfc90u!AfxWndProcBase+0x56
0012fd58 7e418816 USER32!InternalCallWinProc+0x28
0012fdc0 7e428ea0 USER32!UserCallWinProcCheckWow+0x150
0012fe14 7e428eec USER32!DispatchClientMessage+0xa3
0012fe3c 7c90e453 USER32!__fnDWORD+0x24
0012fe60 7e4191be ntdll!KiUserCallbackDispatcher+0x13
0012fe80 78a7e46b USER32!NtUserGetMessage+0xc
0012fe9c 78a7eb18 mfc90u!AfxInternalPumpMessage+0x1a
0012febc 00411d9a mfc90u!CWinThread::Run+0x5b