某医院影像客户端卡死分析

某医院的Windows his客户端在打开患者影像照片时经常卡死,非死循环导致。通过dmp分析,发现0号线程在等待GetWindowText响应,而应答线程在等待异步事件。禁用音频驱动器后故障不再发生。尝试多种修复方法如修改Report2DL.dll、CreateRemoteThread等均未成功。
摘要由CSDN通过智能技术生成

1 故障现象

Windows里的his客户端,登录后,打开患者的影像照片,就很容易his卡死。只得将his强杀再开。卡死频率大约每3~6次就会出现1次。

2 初步分析

2.1 检查his安装正确否

通过beyondcompare做文件夹比较,可以认为his安装正确。

2.2 死循环还是卡死

卡死时用procexp查看该进程的cpu消耗以及各个线程的cpu消耗。发现都接近0。可以认为当时,这个进程里的每个线程都是陷入内核不返回,而不是某些线程处于死循环中。
遂对该进程创建dmp。

3 深入分析

3.1 进程dmp分析

3.1.1 看看0号线程在等什么

用windbg打开进程dmp,~*kv查看每个线程的调用栈。发现wow64字样,这个dmp应该是procexp64抓取的32位进程的dmp。windbg输入!wow64exts.sw进行切换。然后再~*kv
先看0号线程,它的调用栈是:

 # ChildEBP RetAddr      Args to Child              
00 00189424 75d52129     000303cc 0000000d 000000ff user32!NtUserMessageCall+0x15 (FPO: [7,0,0])
01 00189464 75d500d1     008e7e20 00000000 76592744 user32!SendMessageWorker+0x5f2 (FPO: [Non-Fpo])
02 001894ac 06960220     000303cc 06a34518 000000ff user32!GetWindowTextA+0x49 (FPO: [Non-Fpo])
WARNING: Stack unwind information not available. Following frames may be wrong.
03 001894d8 75d4947a     000303cc 069d04d0 000000b6 Report2DL!DllUnregisterServer+0x1027dc
04 001894f8 75d4d205     00000000 00000000 069601e8 user32!InternalEnumWindows+0x5a (FPO: [Non-Fpo])
05 00189518 069603dd     069601e8 069d04d0 00189534 user32!EnumWindows+0x16 (FPO: [Non-Fpo])
06 00189560 0684477b     001895cc 06844789 00189588 Report2DL!DllUnregisterServer+0x102999
07 00189588 06844868     0684739d 00000000 069c4f74 Report2DL+0x477b
08 001895d8 77179280     06840000 00000001 00000000 Report2DL+0x4868
09 001895f8 7717feb7     069c4f64 06840000 00000001 ntdll_77140000!LdrpCallInitRoutine+0x14
0a 001896ec 7717ea8e     00000000 773cc92d 00189890 ntdll_77140000!LdrpRunInitializeRoutines+0x26f (FPO: [Non-Fpo])
0b 00189860 771bd3ff     001898d0 00189890 002db376 ntdll_77140000!LdrpLoadDll+0x472 (FPO: [Non-Fpo])
0c 0018989c 75a82e6a     00000000 001898f0 001898d0 ntdll_77140000!LdrLoadDll+0xc7 (FPO: [Non-Fpo])
0d 001898e4 76429c17     00000000 00000000 00002008 KERNELBASE!LoadLibraryExW+0x233 (FPO: [Non-Fpo])
0e 00189900 76429b9a     00000000 0018997c 00002008 ole32!LoadLibraryWithLogging+0x16 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\w7rtm\com\ole32\common\loadfree.cxx @ 157]
0f 00189924 76429a86     0018997c 00189948 0018994c ole32!CClassCache::CDllPathEntry:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值