问题背景

  游戏上线之后,搜集到的奔溃列表里面列表存在大量的显卡驱动异常崩溃,window在vista之后,将显卡驱动模型从Xpdm改为了WDDM。 WDDM的说明详见百度百科,其中最主要的变更如下:

“在WindowsXP时代有20%的系统蓝屏故障是显卡驱动问题造成的。WDDM在技术水平上有两个组件:一个内核模式驱动程序(KMD)和一个执行大部分密集计算的用户模式驱动程序。新版WDDM模型已将代码的大部分移出了内核模式。由于与显示相关的操作只在用户模式下完成,所以大大提高了系统稳定性。”

  直白的说,就是将显卡以前驱动容易崩溃的部分从Kernel层移到了用户层,要崩溃就崩溃吧,反正不会蓝屏。 这是个挺程序员化的思维,因为我们经常严重bug解不掉的时候就想办法把他变成一个一般的bug。其实这个原本也没什么问题,但是我感觉官方对这些用户层的崩溃解决的速断远远低于以前(会导致蓝屏的时候),一般的bug解决总是这么慢。

  言归正传,厂商官网提供了驱动对应的二进制文件,这些是分析崩溃必须的。

AMD: https://download.amd.com/dir/bin

NVIDIA: https://driver-symbols.nvidia.com/

Intel: https://software.intel.com/sites/downloads/symbols/ …

Microsoft: https://msdl.microsoft.com/download/symbols …

Chrome: …https://chromium-browser-symsrv.commondatastorage.googleapis.com

NVIDIA官网里面说只提供前三年驱动的binaries,不提供任何的pdb文件。官网这段话解释了为何他们要提供这些二进制文件,在不同的机器上会有不同的驱动版本,如果我们拿到一个dump,有可能由于没有必要的组件而无法回溯堆栈,所以NV提供了响应驱动程序的二进制文件。

了解到这些之后,就可以拿到外网上报的崩溃文件,去尝试分析问题的本意源(兼容性,API使用错误等),看看能否找到一些蛛丝马迹。

分析过程

1、首先采用windbg,加载驱动的symbols,看看堆栈,没看出什么更多的信息,symbol对我们调试的帮助是什么,为什么NVIDIA要提供symbols.

2、lm 查看系统信息,看到nvwgf2umx.dll 的symbol并没用被加载,这个dll的类型是export symbol.

symbol类型的描述可以从文档里面看到,export表示windbg没找到匹配的symbol,

lmv可以看到更多的信息

3、直接看不到相关的信息,只能google了。Nvidia的官网论坛有这样一个帖子,遇到的情况和我们类似。

Is this a driver problem or a game problem?

官方人员:定位问题是硬件的问题,建议玩家利用memtest做内存检测;除此之外,他还带了一些常见的显卡驱动问题的Q&&A。

How to provide valuable feedback to NVIDIA

How to enable NVIDIA Graphics Driver and GeForce Experience installer logging

Wagnard Tools (DDU,GMP,TDR Manupulator)-(Updated 09/19/14)

Fix for Control Panel not saving settings

How to make the NVCP display in English

PASCAL WARNING: Bundled and Cheap PCI-E Riser cables can cause decoder corruption and TDR's

在Nvidia的官方论坛,我用nvwgf2umx.dll crash做为关键字,搜了一下,出现了大量的crash。

官网强烈推荐了一遍文章,Stack-walking主要讲了在堆栈损坏的情况下如何利用PE文件中的unwind info去重建堆栈,的确是一篇很好讲述调试机器的文章,也算是意外的收货吧。

官网给出了可能原因:

a) 显卡温度过高: 这类问题玩家可以通过GPUZ和HWMonitor进行监控,确认是否有类似的情况存在。

b) 内存故障: 可以通过memtest进行检测,看看是否存这种case.

c) driver 安装异常,这类倒是可以通过一些工具去进行解决。玩家升级显卡驱动之后出现问题,可以尝试用DDU(Display Driver Uninstaller)来清理对应的驱动,DDU是一款免费的工具,可以用来卸载老的驱动,然后安装指定版本。 个人体验下来,这个工具是真心牛逼,不只有显卡驱动,音频、windows的其他驱动都可以用这个进行处理。

Recommended usage:

-You MUST disconnect your internet or completely block Windows Update when running DDU until you have re-installed your new drivers.

-DDU should be used when having a problem uninstalling / installing a driver or when switching GPU brand.

-DDU should not be used every time you install a new driver unless you know what you are doing.

-DDU will not work on network drive. Please install in a local drive (C:, D: or else).

-The tool can be used in Normal mode but for absolute stability when using DDU, Safemode is always the best.

-If you are using DDU in normal mode, Clean, reboot, clean again, reboot.

-Make a backup or a system restore (but it should normally be pretty safe).

-It is best to exclude the DDU folder completely from any security software to avoid issues.

DDU使用步骤:

1)开机按F8进入安全模式;

2)禁用网络;

3)然后清理驱动程序;

4)官网下载驱动进行安装;

还有另外一款工具DriverDR,DriverDR 一款很好的用来升级驱动的工具,工具是好工具,但是需要花钱, 有钱的可以体验下,我等屌丝就不用了。

最后总结下,官网更多的是从硬件和驱动去解决这类的崩溃,没有提出游戏内容导致这类问题的解决方案,那该如何是好呢?

问题貌似无解,那其他产品类似的crash率如何呢?看了一圈,貌似都是DX9的游戏居多,dx11的不多,没办法评估显卡驱动崩溃的影响面。

对于外网的这些显卡驱动崩溃 ,按照目前的信息,估计也得不出什么结论。在有限的时间内继续深入调查的话,付出收益比并不高,还不如去做其他的事情呢。所以我决定先先搜集下面的信息,然后再内网进行重现,然后看情况进行针对性的处理。

a) 出现这种崩溃的都是哪些玩家?

b) 他们的画面设置是什么?

c) 出现这类问题的显卡是什么? 驱动版本是什么?

d) 出现问题玩家的操作系统是什么?

c) 这类crash都是发生在游戏当中的什么阶段呢?

结论

      最近把发生这里错误的机器信息都上报上来,做了一些简单的分析,有如下结论:

1、出现该问题的机器在视频画质的选择上并没有明显的共性,推翻了我原先认为的高画质的机器更容易出现此类crash;

2、驱动版本越新,越容易出现问题,这点倒可以由数据印证,某个版本的驱动会更容易出现问题,下个版本会变得更好;

  哈哈,上面两点对我的修复工作没有任何的帮助,目前还在思考中,下面的工作还是从项目本身入手,搭建一系列的测试环境,在各个环境下面修复 DX 的一些告警,然后再看看数据是否有变化。

  如果有同行正在研究类似的问题,有相关经验的话,可以留言讨论 或联系QQ 2403798112.  暗号: KHacker.

-------------------------------------------------------------

后记

知乎henry 给出了一些处理该为题的建议,对于第二点,回头外网出现问题的时候,我可以试试看。

2、出现问题中的这种错误提示,依靠开启垂直同步通常是不会有作用的。多半还是得从两个方面入手去解决。

一是显卡驱动和游戏本身的BUG或兼容性问题。可以尝试升级显卡驱动程序版本,或者打上游戏补丁。

二是显卡硬件不太稳定。可以跑一下3DMARK和Furmark测试一下,看看显卡是否也存在同样的问题。

作者:Feng Henry
链接:https://www.zhihu.com/question/317925884/answer/649669864
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

nvwgf2umx.dll 显卡崩溃问题尝试修复的更多相关文章

  1. 解决方案:ppt打不开,显示发现文件中的内容有问题。可尝试修复此演示文稿

    ppt打不开,显示发现文件中的内容有问题.可尝试修复此演示文稿 故障截图如下: 解决方法: 主要是因为文件是网络下载的,office自动锁定了文件(默认不可编辑).在文件上右键-属性-解除锁定(最下面 ...

  2. ppt打不开,显示发现文件中的内容有问题。可尝试修复此演示文稿

    ppt打不开,显示发现文件中的内容有问题.可尝试修复此演示文稿 PPT发现要打开的文件有问题,修复后无法打开该文件 解决方法: 主要是因为文件是网络下载的,office自动锁定了文件(默认不可编辑). ...

  3. [Winform]关于cefsharp触屏设备长按文本内容,崩溃问题的修复

    摘要 在之前遇到cefsharp,在触屏电脑上,长按文本内容,会崩溃的问题. 相关文章 当时遇到这样的问题,在cefsharp项目下提交了bug.已经修复,可以参考当时我提的bug,以及解决过程,可参 ...

  4. Centos-检查文件系统并尝试修复-fsck

    fsck 检查文件系统并尝试修改错误,修复对象为设备,本质上是调用 /sbin/fsck.filesystemName 命令, filesystemName是指定设备的文件系统类型,如图分区中有文件丢 ...

  5. C#调用c++的dll报错:“尝试读取或写入受保护的内存。这通常指示其他内存已损坏“

    一:c++代码内部报错引起.可能是空指针或者其他. 二:需要从c#代码调试进入c++代码.可以吧c++的dll和pdb拷入工程项目的debug目录下面. 三:我发现的错误时在C++内部声明啦全局变量, ...

  6. 给虚拟机添加新硬盘并分区,fdisk查看分区,分区,重新读取分区表信息partprobe,格式化,挂载,查看分区挂载信息,自动挂载文件/etc/fstab,/etc/fstab文件错误导致重启崩溃后的修复

    1.虚拟机关机断电 2.添加硬盘 2.开机 3.fdisk -l查看刚才新添加的硬盘 [root@localhost ~]# fdisk -l 磁盘 /dev/sda:21.5 GB, 2147483 ...

  7. msvcp71.dll 怎么丢失的?如何修复

    解决方法:另一台电脑上下载这个dll,再用优盘拷回来,复制到c:\windows\system32\下. 个人遇到的情况:迅雷下载东西时,或者在操作迅雷时出现的. win7 64位下 点击下载

  8. centos崩溃后如何修复

    首先看能不能进单用户模式,能进去,就用mount -o remount,rw / 重置成可写的. 不能进单用户模式,就进入光盘救援模式,进去挂载了系统,这时候通常是必要的动态静态库出了问题,先应该做的 ...

  9. asp.net core webapi 似乎未安装在 IIS 中承载 .NET Core 项目所需的 AspNetCoreModule。请尝试修复 Visual Studio 以纠正该问题。

    安装 DotNetCore.1.1.0-WindowsHosting 后,提示如题错误. 解决办法: ASP.NET Core 应用程序运行,可以选择 IIS Express 也可以选择 自己运行 , ...

随机推荐

  1. 关于sniff函数的一个小坑

    最近在用scapy模块写一个关于WiFi的脚本时用到sniff函数,其中遇到了一个小坑,记录如下: sniff函数是在指定网卡上每次嗅探到一个数据包后然后将它传给prn指定的函数.

  2. nginx优化之keepalive

    一.nginx之tcp_nopush.tcp_nodelay.sendfile 1.TCP_NODELAY你怎么可以强制 socket 在它的缓冲区里发送数据?一个解决方案是 TCP 堆栈的 TCP_ ...

  3. uni-app图片压缩转base64位 利用递归来实现多张图片压缩

    //选择图片 chooseImage(){ let that =this uni.chooseImage({ sizeType: ['original','compressed'], //可以指定是原 ...

  4. 使用 wordcloud 构建词云图

    from wordcloud import WordCloudfrom matplotlib import pyplot as pltfrom PIL import Imageimport numpy ...

  5. Java:Spring @Transactional工作原理

    本文将深入研究Spring的事务管理.主要介绍@Transactional在底层是如何工作的.之后的文章将介绍: propagation(事务传播)和isolation(隔离性)等属性的使用 事务使用 ...

  6. 四.property

    将一个类的函数定义成特性以后,对象再去使用的时候obj.name,根本无法察觉自己的name是执行了一个函数然后计算出来的,这种特性的使用方式遵循了统一访问的原则 # 例一:BMI指数(bmi是计算而 ...

  7. 将日志备份推送到s3存储上

    1.将日志备份推送到s3存储上 #!/bin/sh # 此脚本实现将/usr/local/netqin/boss/netqin/logs/BOSS_ContentServer/BOSS_AD_SDK ...

  8. Java Spring Boot VS .NetCore (十一)自定义标签 Java Tag Freemarker VS .NetCore Tag TagHelper

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  9. 学习笔记: Expression表达式目录树详解和扩展封装

    1. 表达式链接扩展封装,ORM常用 And  Or /// <summary> /// 表达式访问者 /// </summary> public class Expressi ...

  10. windows无法安装msi文件

    命令提示符(管理员身份运行): 输入:msiexec /i e:\spark\scala-2.11.12.msi 其中e:\spark\scala-2.11.12.msi:就是安装文件的位置.