howsk 发表于 2021-12-4 23:18

当你电脑蓝屏时的粗暴解决方案

# **一、事出原因**

最近不知道怎么回事,家里电脑经常性地出现蓝屏(先死机后蓝屏),很多时候有些文档没有保存便蓝屏导致文档丢失,其中也包括您现在正在看到的这一篇文章(撰写本文时,蓝了一次),以前一直比较懒,重启大法一顿怼,然后重新再做编辑,只不过PPT重做简直要人命,无奈之下,放下了所有的工作,来研究研究蓝屏的原因,顺便正儿八经使用一下Typora。

**PS:本文结尾提到的解决方案较为野蛮粗暴,可能让你本就不富裕的家庭雪上加霜,请慎用!**



---

# **二、准备工作**

1. 使用的工具:WinDBG
2. 导入的文件:C:\Windows\Minidump\xxxxxx.dmp

关于WinDBG这款神器想必无需再做多的介绍,至于导入文件的目录为windows在遇到蓝屏之后会保存的dmp文件所在的位置,我的电脑是Win10系统,其它系统目前暂时不知道,在网上也有看到消息说要提前设置好,但是我并没有设置,这里也贴一下设置的图片吧。

![](https://s2.loli.net/2021/12/04/inJa7mT64GldN9h.png)

也有文章说**写入调试信息**需要选择第一个。

另外需要设置WinDBG的访问符号,在(http://www.windbg.org/)中可以看到

> Symbol Server (Microsoft):
>
> ```shell
> srv*c:\mss*http://msdl.microsoft.com/download/symbols
> ```
>
> Symbol Server (Citrix):
>
> ```shell
> srv*c:\css*http://ctxsym.citrix.com/symbols
> .symfix c:\mss.sympath+ srv*c:\css*http://ctxsym.citrix.com/symbols
> ```

可使用环境变量设置,也可在软件File - Symbol File Path中进行设置,至此,准备工作一切就绪,下面即可进行分析。

---

# **三、分析过程**

WinDBG打开dmp文件,稍等一会便可出现分析报告,我的分析报告如下:

```shell
Microsoft (R) Windows Debugger Version 6.12.0002.633 X86
Copyright (c) Microsoft Corporation. All rights reserved.


Loading Dump File
Mini Kernel Dump File: Only registers and stack trace are available

Symbol search path is: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;SRV*c:\mysymbol* http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows 7 Kernel Version 19041 MP (6 procs) Free x64
Product: WinNt, suite: TerminalServer SingleUserTS
Machine Name:
Kernel base = 0xfffff805`67c00000 PsLoadedModuleList = 0xfffff805`6882a1d0
Debug session time: Sat Dec4 20:02:02.508 2021 (UTC + 8:00)
System Uptime: 0 days 1:07:26.549
Loading Kernel Symbols
...............................................................
................................................................
................................................................
................
Loading User Symbols
Loading unloaded module list
.........
*******************************************************************************
*                                                                           *
*                        Bugcheck Analysis                                    *
*                                                                           *
*******************************************************************************

Use !analyze -v to get detailed debugging information.

BugCheck 3B, {c0000005, fffff80567efbfd2, ffffe90838039420, 0}

Probably caused by : Unknown_Image ( PAGE_NOT_ZERO )

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

*** Memory manager detected 62334 instance(s) of page corruption, target is likely to have memory corruption.

5: kd> !analyze -v
*******************************************************************************
*                                                                           *
*                        Bugcheck Analysis                                    *
*                                                                           *
*******************************************************************************

SYSTEM_SERVICE_EXCEPTION (3b)
An exception happened while executing a system service routine.
Arguments:
Arg1: 00000000c0000005, Exception code that caused the bugcheck
Arg2: fffff80567efbfd2, Address of the instruction which caused the bugcheck
Arg3: ffffe90838039420, Address of the context record for the exception that caused the bugcheck
Arg4: 0000000000000000, zero.

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


EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - 0x%p

FAULTING_IP:
nt!RtlpIsNameInExpressionPrivate+92
fffff805`67efbfd2 6683382a      cmp   word ptr ,2Ah

CONTEXT:ffffe90838039420 -- (.cxr 0xffffe90838039420)
rax=ffff7b83a1b1ab84 rbx=0000000000000074 rcx=ffffa583a1b1ab40
rdx=ffffe90838039fb0 rsi=0000000000000000 rdi=ffffa583a1b1ab40
rip=fffff80567efbfd2 rsp=ffffe90838039e20 rbp=0000000000000000
r8=0000000000000000r9=ffffa583a1b1ab40 r10=0000000000000032
r11=ffffe90838039fb0 r12=0000000000000000 r13=ffffbb07cac1d880
r14=0000000000000000 r15=000000000000005c
iopl=0         nv up ei pl nz na po nc
cs=0010ss=0018ds=002bes=002bfs=0053gs=002b             efl=00050206
nt!RtlpIsNameInExpressionPrivate+0x92:
fffff805`67efbfd2 6683382a      cmp   word ptr ,2Ah ds:002b:ffff7b83`a1b1ab84=????
Resetting default scope

CUSTOMER_CRASH_COUNT:1

DEFAULT_BUCKET_ID:VISTA_DRIVER_FAULT

BUGCHECK_STR:0x3B

PROCESS_NAME:QQPYUserCenter

CURRENT_IRQL:0

BAD_PAGES_DETECTED: f37e

LAST_CONTROL_TRANSFER:from fffff80567efbe58 to fffff80567efbfd2

STACK_TEXT:
ffffe908`38039e20 fffff805`67efbe58 : ffffbb07`00000003 00000000`00000000 ffffbb07`cac1d880 00000000`00000000 : nt!RtlpIsNameInExpressionPrivate+0x92
ffffe908`38039f10 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!RtlIsNameInExpression+0x48


SYMBOL_NAME:PAGE_NOT_ZERO

FOLLOWUP_NAME:MachineOwner

MODULE_NAME: Unknown_Module

IMAGE_NAME:Unknown_Image

DEBUG_FLR_IMAGE_TIMESTAMP:0

STACK_COMMAND:.cxr 0xffffe90838039420 ; kb

BUCKET_ID:PAGE_NOT_ZERO

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

*** Memory manager detected 62334 instance(s) of page corruption, target is likely to have memory corruption.

```

重点关注第30行以下,其中**BugCheck 3B, {c0000005, fffff80567efbfd2, ffffe90838039420, 0}**大致可以看出错误代码为0x0000003B,百度一下即可知该错误代码多为软硬件兼容性问题,此事心里大概有一个底了。**Probably caused by : Unknown_Image ( PAGE_NOT_ZERO )**这里其实可以关注一下,由于结果未“Unknown_Image”所以也失去了分析它的意义了。

其实低49-54行给出了导致错误的进程具体位置,这个我看不懂,感兴趣的大佬可以给我解释一下,要怎么分析到他的具体地址。

从第81行开始较为重要,其中抛出的“**VISTA_DRIVER_FAULT**”表示访问驱动错误,**PROCESS_NAME**指向了**QQPYUserCenter**,表示罪魁祸首是该进程,即“**QQ拼音用户中心”**,但是我实在想不通为什么QQ拼音和驱动又有关系了。

继续向下看到第94、95行, 表示该进程调用了ntdll中的**RtlIsNameInExpression**之后又调用了**RtlpIsNameInExpressionPrivate+0x92**函数时出错了,该问题也可在第62-64行能够清楚看到具体出错的反汇编代码。

```cpp
FAULTING_IP:
nt!RtlpIsNameInExpressionPrivate+92
fffff805`67efbfd2 6683382a      cmp   word ptr ,2Ah
```

---

# 四、总结

至此,分析全部结束,并做一下最终的总结:**此次蓝屏主要原因是QQPYUserCenter与某个软硬件发生驱动访问时出现问题,既然有驱动则多为硬件所致。**

在网上查询了很多信息,用排除法最终锁定了“Logitech MouseWare”即罗技鼠标,因为外设我就用了罗技的鼠标和键盘。

---

# 五、解决方案

![解决方案1](https://s2.loli.net/2021/12/04/Jj47UmonNRK86eP.png)

![解决方案2](https://s2.loli.net/2021/12/04/YXpfSGFurMN3gja.jpg)

~~更新Logitech的驱动~~

---

# 六、参考文献

(http://www.windbg.org/)

(https://blog.csdn.net/hongkaihua1987/article/details/87001250)

[安装与配置windbg的symbol(符号)](https://blog.51cto.com/u_11512826/2068421)

(https://www.forece.net/post/3794.htm)

(https://blog.csdn.net/a3125504x/article/details/77963883)

[《蓝屏0x0000003b》的解答](https://answers.microsoft.com/zh-hans/windows/forum/all/%e8%93%9d%e5%b1%8f0x0000003b/faa6f5cf-d541-409e-9de7-28a83d02e6ef)

涛之雨 发表于 2021-12-4 23:49

本帖最后由 涛之雨 于 2021-12-7 13:28 编辑

最简单的办法就是升级win11,
因为win11只有黑屏
(或者升级dev,绿屏)


楼主负责”粗暴“,那我就负责”简单“吧

howsk 发表于 2021-12-5 00:58

涛之雨 发表于 2021-12-4 23:49
最简单的办法就是升级win11,
因为win11只有黑屏
(或者升级dev,绿屏)

你这个相当粗暴,从根源上解决问题,永不出现蓝屏{:1_921:}

李杨 发表于 2021-12-4 23:27

还是win7好用

longskr 发表于 2021-12-5 12:30

tanzhilang 发表于 2021-12-5 00:54

悟了。感谢分享。。

tek2y 发表于 2021-12-4 23:46

感谢分享方法

人心所向 发表于 2021-12-5 00:02

解决方案果然粗暴

冥界3大法王 发表于 2021-12-4 23:24

类似工具,联想兰屏查看。

lsy832 发表于 2021-12-5 00:07

看最后的图我悟了

qwe12344 发表于 2021-12-5 01:07

页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 当你电脑蓝屏时的粗暴解决方案