问题背景

  游戏上线之后,搜集到的奔溃列表里面列表存在大量的显卡驱动异常崩溃,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. cmake find_package 命令

    1. find_package(<Name>)命令首先会在模块路径中寻找 Find<name>.cmake,这是查找库的一个典型方式. 具体查找路径依次为CMake:  变量$ ...

  2. Bootstrap3 模态框 select2搜索框无法输入

    <div class="modal fade" role="dialog" aria-hidden="true" data-backd ...

  3. C语言官网蓝桥杯训练1115DNA

    这道题是比较简单的输出字符图形的题,但是有几个坑还是要注意下. 1.题中所述的X是大写的,不要看成小写了.(我就错了好几次) 2.每一行输出最后的X后不能在输出空格. 3.输出两个DNA中间有一个空行 ...

  4. 使用SSH的scp命令行传输文件到远程服务器

    使用方式如下: 1.上传本地文件到服务器 scp /path/filename username@servername:/path/例如scp /var/www/test.php root@192.1 ...

  5. 五种ip proxy的设置方法

    我们在制作爬虫爬取想要的资料时,由于是计算机自动抓取,强度大.速度快,通常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网页,就很可能被封,在这里介绍相关的技巧,以免被封:但在制作爬虫时,还 ...

  6. mysql 的crud操作(增删改查)

    1.mysql添加记录 --添加记录的语法(可添加单条记录或者多条记录),INTO是可以省略的,字段名也可以省略的,但是如果省略的话,后面对应的value的值就要全部填写 INSERT [INTO] ...

  7. 金蝶KIS&K3助记码SQL数据库批量刷新

    金蝶KIS&K3助记码SQL数据库批量刷新 用的次数不多,就没有写入存储过程或者触发里面了,可以自行实现. 第一步选择对应账套的数据库,执行下面的命令,这个是一个函数. go if exist ...

  8. beta冲刺5/7

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:beta冲刺(5/7) 团队部分 后敬甲(组长) 过去两天完成了哪些任务 ppt制作中 数据集标注 接下来的计划 制作p ...

  9. 一键配置高可用Hadoop集群(hdfs HA+zookeeper HA)

    准备环境 3台节点,主节点 建议 2G 内存,两个从节点 1.5G内存, 桥接网络 关闭防火墙 配置ssh,让节点之间能够相互 ping 通 准备  软件放到 autoInstall  目录下,已存放 ...

  10. 安装酷痞到IIS7.x共用80端口Windows(64位)系统下运行多个酷痞

    需求: 1.酷痞直接运行的模式是自宿主运行.由于win系统一般都由iis提供多个网站服务,并首先占用了80端口,如果想酷痞可以直接通过主机头和iis共用80端口会出现这种运行模式的需求. 以下是实现方 ...