none
Windows 7 64位总在注销返回登录界面时候蓝屏0xAB,WinDbg 报告 csrss.exe 可疑//启动时内核大量读取字体文件?! RRS feed

  • 问题

  • 4月16号突然在注销用户返回登录界面时候蓝屏 0x000000AB,才发现系统不知道什么时候有了这毛病,
    机器是 i5-750,12 GB 内存,一直正常,4月里仅安装了 Flash 更新, VMWare 9 和正常的 Windows Update.
    让 WinDbg 分析 MEMORY.DMP,打印如下,求帮助!

    *******************************************************************************
    *                                                                             *
    *                        Bugcheck Analysis                                    *
    *                                                                             *
    *******************************************************************************

    SESSION_HAS_VALID_POOL_ON_EXIT (ab)
    Caused by a session driver not freeing its pool allocations prior to a
    session unload.  This indicates a bug in win32k.sys, atmfd.dll,
    rdpdd.dll or a video driver.
    Arguments:
    Arg1: 0000000000000001, session ID
    Arg2: 0000000000000070, number of paged pool bytes that are leaking
    Arg3: 0000000000000000, number of nonpaged pool bytes that are leaking
    Arg4: 0000000000000001, total number of paged and nonpaged allocations that are leaking.
    nonpaged allocations are in the upper half of this word,
    paged allocations are in the lower half of this word.

    Debugging Details:
    ------------------

    Use !poolused 8 to dump allocation info for leaked session pooltags.

    TAG_NOT_DEFINED_405: Pool

    BUGCHECK_STR:  0xAB_Pool

    DEFAULT_BUCKET_ID:  WIN7_DRIVER_FAULT

    PROCESS_NAME:  csrss.exe

    CURRENT_IRQL:  0

    LAST_CONTROL_TRANSFER:  from fffff8000523a36f to fffff80004e92c40

    STACK_TEXT:  
    fffff880`0b830ac8 fffff800`0523a36f : 00000000`000000ab 00000000`00000001 00000000`00000070 00000000`00000000 : nt!KeBugCheckEx
    fffff880`0b830ad0 fffff800`050d8917 : fffff880`0376db40 fffff880`0376d000 fffff880`0376d000 fffffa80`0cc01940 : nt!MiCheckSessionPoolAllocations+0x13f
    fffff880`0b830b10 fffff800`051d4ff5 : fffff880`0b830ba8 fffffa80`0cc01940 ffffffff`ffffff8b fffff880`0376d000 : nt!MiDereferenceSessionFinal+0x137
    fffff880`0b830bb0 fffff800`04e63e48 : fffff800`05021940 00000000`00000001 00000000`00000000 fffffa80`0d957890 : nt! ?? ::NNGAKEGL::`string'+0x24a35
    fffff880`0b830be0 fffff800`0516b05a : fffff8a0`0204a060 00000000`00000000 00000000`00000000 fffffa80`0cc01940 : nt!MmCleanProcessAddressSpace+0x610
    fffff880`0b830c30 fffff800`0516b42d : fffff880`00000000 fffff800`05133301 00000000`00000000 fffffa80`0d9c1a10 : nt!PspExitThread+0x56a
    fffff880`0b830d30 fffff800`04e83946 : fffff880`04764180 00000000`00000080 fffffa80`0cc01940 00000000`00000200 : nt!PspTerminateThreadByPointer+0x4d
    fffff880`0b830d80 00000000`00000000 : fffff880`0b831000 fffff880`0b82b000 fffff880`0b830980 00000000`00000000 : nt!KiStartSystemThread+0x16


    STACK_COMMAND:  kb

    FOLLOWUP_IP: 
    nt!MiCheckSessionPoolAllocations+13f
    fffff800`0523a36f cc              int     3

    SYMBOL_STACK_INDEX:  1

    SYMBOL_NAME:  nt!MiCheckSessionPoolAllocations+13f

    FOLLOWUP_NAME:  MachineOwner

    MODULE_NAME: nt

    DEBUG_FLR_IMAGE_TIMESTAMP:  50e79935

    IMAGE_NAME:  memory_corruption

    FAILURE_BUCKET_ID:  X64_LEAKED_SESSION_POOLTAG_Pool

    BUCKET_ID:  X64_LEAKED_SESSION_POOLTAG_Pool

    Followup: MachineOwner
    ---------

    ---------

    然后又发现(还是这几天的事),Windows 的启动速度变得很不稳定。

    检查了 Superfetch 的 ReadyBoot 监视报告,发现每隔一次启动系统,就会出现一次很多文件 miss 的情况。

    于是用 WPT 做了一次内核启动跟踪,发现 miss 的文件居然是 csrss.exe 和 wininit.exe 在 Session 里读取系统里将近600MB的字体文件!

    于是造成了上次启动 ReadyBoot 没来得及缓存,系统启动缓慢,下次启动内存狂飙的现象……

    我觉得内核把字体读进了 session 是造成蓝屏的根本原因,蓝屏在安全模式下依然存在,而启动内存的确是比正常时候高了600MB左右。

    有对 Windows 7 内核行为熟悉的来看看么?

    • 已编辑 Geek.liang 2013年4月25日 14:41 添加信息
    2013年4月25日 13:39

答案

  • 蓝屏在注销时出现是因为 CSRSS.EXE 的运行受到了影响,但故障原因还不好确定是什么 BUG 还是什么程序,磁盘错误也是一种可能。
     
    之前你提到的字体问题,现在这些字体还存在吗?暂时清空多余的字体是否会有改善?
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "Geek.liang"
     
    磁盘应该没有问题已经检查过,而且只有注销返回到登录界面的时候才蓝屏不觉得一定是有程序运行逻辑上的问题吗?例如特定的 bug 之类的。
     
     
    • 已标记为答案 Geek.liang 2013年5月1日 5:03
    2013年4月28日 4:21
  • 原因找到了,在虚拟机里重现成功,截图里 ubuntu 字体被我 systemlink 到了文泉驿正黑作为中文字体,估计内核在处理 ttf 字体和 ttc 字体的连接时候出现了 bug。感谢。
    2013年5月1日 5:03

全部回复

  • 0x000000AB 错误不太常见,通常是因为一个驱动程序会话无法在会话关闭前正确释放内存分配池(Pool Allocations),从而引起内存错误而当机。
     
    从你的描述来看,我建议用磁盘扫描程序检查一下所有硬盘驱动器,看看是否有磁盘错误或硬盘运行不稳定的情况。
     
    硬盘的健康情况还可以用 HD Tunes、Crystal DiskInfo 辅助检查一下。
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐??NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "Geek.liang"
     
    4月16号突然在注销用户返回登录界面时候蓝屏 0x000000AB,才发现系统不知道什么时候有了这毛病,
    机器是 i5-750,12 GB 内存,一直正常,4月里仅安装了 Flash 更新, VMWare 9 和正常的 Windows Update.
     
     
    2013年4月26日 22:16
  • 磁盘应该没有问题已经检查过,而且只有注销返回到登录界面的时候才蓝屏不觉得一定是有程序运行逻辑上的问题吗?例如特定的 bug 之类的。
    2013年4月27日 5:29
  • 蓝屏在注销时出现是因为 CSRSS.EXE 的运行受到了影响,但故障原因还不好确定是什么 BUG 还是什么程序,磁盘错误也是一种可能。
     
    之前你提到的字体问题,现在这些字体还存在吗?暂时清空多余的字体是否会有改善?
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "Geek.liang"
     
    磁盘应该没有问题已经检查过,而且只有注销返回到登录界面的时候才蓝屏不觉得一定是有程序运行逻辑上的问题吗?例如特定的 bug 之类的。
     
     
    • 已标记为答案 Geek.liang 2013年5月1日 5:03
    2013年4月28日 4:21
  • 原因找到了,在虚拟机里重现成功,截图里 ubuntu 字体被我 systemlink 到了文泉驿正黑作为中文字体,估计内核在处理 ttf 字体和 ttc 字体的连接时候出现了 bug。感谢。
    2013年5月1日 5:03
  • 很高兴你自己找到了故障原因。
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "Geek.liang"
     
    原因找到了,在虚拟机里重现成功,截图里 ubuntu 字体被我 systemlink 到了文泉驿正黑作为中文字体,估计内核在处理 ttf 字体和 ttc 字体的连接时候出现了 bug。感谢。
     
     
    2013年5月1日 23:21