首页 > Client, Other > Toubleshooting:Vista关机时Explorer.exe进程假死

Toubleshooting:Vista关机时Explorer.exe进程假死

2008年8月8日

 

最近碎片滴系统一直无法正常关机,重装操作系统之后问题依旧(不想去排错,懒~~只想重装解决问题!!)。前几天终于把此问题给搞定了,现在来总结一下。

 

问题描述

现象描述

操作系统无法正常关机,会报一个“未知”错误。从现象上可以看到Explorer.exe进程已经被挂起,以至于整个关机过程都被挂起。

 DSC06105

关机过程无法截图,此图为相机所拍,有些不清晰

软件环境

操作系统为:英文Windows Vista (TM) Ultimate SP1并打完官方所有补丁,版本号为6001.18063.x86fre.vistasp1_gdr.080425-1930

应用程序:N多常用应用程序

option1 小技巧:Windows Vista的详细版本号可以在HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion的BuidLabEX键值中查到

故障分析

  1. 此问题从现象上来看,在关机过程中Explorer进程无法正常被操作系统Close。遂开机会查看Event Log中与Explorer相关的报错,无果。(居然没有一条Explorer进程的报错信息……)
  2. 感觉上此问题是操作系统关机时Handle无法被正常Rlease的典型案例。理论上Windows XP和2003的关机过程应该很强了,如果有Handle无法被正常Rlease,在超时后也会被操作系统强行Close掉,WinVista中不应该有这样类似的问题存在。在WinXP和2003中,我们也可以借助UPHClean来快速帮我们搞定这类问题,但UPHClean似乎无法在WinVista上安装,因此,问题陷入僵局。
  3. WinVista中真的就没办法来分析和解决这一问题了吗?此问题为关机问题,有没办法来帮我们把Explorer的整个结束过程给抓下来呢?开机问题我们可以借助激活Uerenv.log来帮我们做记录,难道对关机问题我们真的就束手无策?
  4. 突然想到,为何不抓一个关机时Explorer进程的Memory Dump来帮助我们分析,说干就干……
  • 调用Adplus将Explorer.exe进程监控起来,让它在关机过程中帮我们抓一个Explorer.exe进程的Crash Dump

SNAG-0000

  • 命令执行成功后,我们可以看到会按我们预期在C:debug目录下帮我们生成Explorer进程的Crash Dump及相关信息文件,并程序开始自动监控Explorer进程

SNAG-0001

生成相关文件路径及命名方式,方便我们查看

SNAG-0002

程序已经开始监视Explorer.exe进程

  • 程序已经开始工作,立马重启一次。开机后用WinDbg打开先前记录下的Dump文件进程调试

SNAG-0003

  • 在调试过程中发现Explorer.exe在后台有28个线程在运行,其中第15号线程出了问题。

SNAG-0005

  • 从上图中我们可以看出Vista User32模块中的SendMessageW函数将相关指令传递给freeime模块,freeime模块的UIWndProc函数3次处理异常,并最后GB2Unicode函数处理异常。Windows在4次尝试后宣告Explorer结束过程挂起,由此导致关机过程失败。

解决方案

  1. freeime模块到底是什么?怎么感觉似曾相识?首先可以判断此东西非WinVista原生模块。
  2. 看到“IME”就感觉和输入法有关,在添加删除程序里面终于找到了罪魁祸首

SNAG-0004

将“极点五笔输入法 汶川地震纪念版 SP1” 卸载并更换为“极点五笔6.1”后,关机过程流畅,问题顺利解决。

总结

  1. “极点五笔输入法 汶川地震纪念版 SP1”与英文Windows Vista (TM) Ultimate SP1有兼容性问题
  2. 在英文Windows Vista (TM) Ultimate SP1中安装完“极点五笔输入法 汶川地震纪念版 SP1”后,将导致关机过程中Explorer.exe无法正常结束
  3. 建议在英文Windows Vista (TM) Ultimate SP1中安装使用极点五笔6.1版本




声明  :  转载请注明出处: 碎片IT资讯



作者: 分类: Client, Other 标签:


  1. zhenhua
    2008年8月13日10:09 | #1

    谢谢!

    学习了排错经验

  2. zhilin
    2008年8月13日19:29 | #2

    牛人啊,学习了

  1. 本文目前尚无任何 trackbacks 和 pingbacks.