我们的32位应用程序上的AppHangXProcB1

时间:2014-06-25 05:59:43

标签: c winapi hang

我们有一个C程序(连接到我们服务器的客户端)。该程序使用Win32 API:s来创建控件等。它是一个单线程应用程序。最近,应用程序已开始在Windows 7中随机挂起。

感谢Application Verifier,我可以检测出有问题的API并对其进行纠正。

现在仍有一些客户报告“无响应”情况。

他们身边的崩溃转储显示以下API:

 SendMessage(HWND_BROADCAST, WM_DDE_INITIATE, (WPARAM)hClient, MAKELONG(aAppl,aTopic));

是的,它向WinWord.exe发送DDE命令。任务管理器在无响应状态下显示Winword。

Evtx揭示了以下内容:

Fault bucket , type 0
Event Name: AppHangXProcB1
Response: Not available
Cab Id: 0

Problem signature:
P1: OurApplication.exe
P2: 14.14.1.50
P3: 537337f4
P4: b6f1
P5: 32
P6: WINWORD.EXE
P7: 15.0.4615.1000
P8: 
P9: 
P10: 

Attached files:
C:\Users\diane-do\AppData\Local\Temp\WER91C7.tmp.appcompat.txt
C:\Users\diane-do\AppData\Local\Temp\WER958F.tmp.WERInternalMetadata.xml
C:\Users\diane-do\AppData\Local\Temp\WER968B.tmp.xml
C:\Users\diane-do\AppData\Local\Temp\WER969C.tmp.hdmp
C:\Users\diane-do\AppData\Local\Temp\WER9777.tmp.mdmp

These files may be available here:
C:\Users\diane-do\AppData\Local\Microsoft\Windows\WER\ReportQueue\AppHang_OurApplication.exe_e9b582fc22d416b8787c1184f6fe7fa19d63_cab_0fde97a1

Analysis symbol: 
Rechecking for solution: 0
Report Id: 9e84daa9-eff8-11e3-a2fb-90b11c841d1a
Report Status: 36

任何帮助将不胜感激。

请注意以上是Win 7 64位,而我们的应用程序是32位。不知道他们的Office 2013是什么(32位或64位)

我知道以下内容: - DDE是旧技术,但现在改变它是不可能的。 - 对于上述情况,我无法使用SendMessageTimeout API,因为我们的客户端必须等到命令完成。

ONCE AGAIN,挂起(非响应状态)随机发生,并不总是在DDE但是各种情况下发生。在计算某些东西时,即使在进行如下简单操作时也是如此。客户从我们的菜单启动CHM文件,然后按Alt + Tab启动到另一个应用程序,然后按Alt + Tab返回我们的应用程序,我们的应用程序变得无响应。

P.S:我也没有在网上找到任何关于如何解释这些evtx应用程序日志的文件,P1 P2代表什么。什么签名意味着什么,或者什么样的故障桶类型,或AppHangXProcB1或AppHangB1等的任何含义。如果您有相同的链接,请通过链接。

1 个答案:

答案 0 :(得分:1)

sendmessage是一个阻塞调用,只有在接收者应用程序处理消息后才会返回。在这里,它被封锁了它也阻止了您的应用程序调度消息。由于您的应用程序无法处理任何进一步的窗口消息,因此它挂起了GUI。 再次检查处理窗口消息所做的所有处理,以查找任何阻塞调用,如waitforsingleobject,recv,connect in it。