问题背景

  游戏上线之后,搜集到的奔溃列表里面列表存在大量的显卡驱动异常崩溃,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. 转载:.Net 程序集 签名工具sn.exe 密钥对SNK文件 最基本的用法

    .Net 程序集 签名工具sn.exe 密钥对SNK文件 最基本的用法 阐述签名工具这个概念之前,我先说说它不是什么: 1.它不是用于给程序集加密的工具,它与阻止Reflector或ILSpy对程序集 ...

  2. chromerdriver下载地址:xpath_help

    chrome下载地址 http://npm.taobao.org/mirrors/chromedriver xpath_help https://blog.csdn.net/Cayny/article ...

  3. 在js中插入html语句

    连上数据库之后,填充数据时往往需要在js中插入html语句 做法是: <body> <div class="modal-body" id="delete ...

  4. java 利用jsoup 爬取知乎首页问题

    今天学了下java的爬虫,首先要下载jsoup的包,然后导入,导入过程:首先右击工程:Build Path ->configure Build Path,再点击Add External JARS ...

  5. VICA 架构设计

    本文记录最近完成的一个通用实时通信客户端的架构. 背景 我们公司是做税务相关的软件,有针对大客户 MIS 系统,也有针对中小客户的 SaaS 平台.这些系统虽然都是 B/S 的,但是也需要使用 Act ...

  6. Oracle做insert或者update时未提交事务导致表锁定解决办法

    //查看被锁定表有几个 select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$sessi ...

  7. 独立使用Asp.net Core 的razor模板 (一):Razor引擎的一些细节

    由于最近需要写一些界面稍微好看点的Winform程序,如果用原生控件,,想要达到好看的程度,需要花费比较大的功夫,因为之前使用过CefSharp,因此发觉如果是使用CEF+Html的方式,界面可以相对 ...

  8. 下面为初学者分享一下SQL 数据库学习资料

    一.基础 1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份 ...

  9. ef core的外键约束笔记

    ef core设置可选外键,有如下几种方式:1.在依赖实体AAA中,并不显式设置外键属性XXXId 2.手动设置外键属性XXXId为可空类型(int?等类型) 3.在实体类与数据表进行映射时,配置狭隘 ...

  10. C# - 获取windows系统特殊文件夹路径

    一.路径分类 1.绝对路径 完整路径,从磁盘符号开始,如:C:\Windows 2.相对路径 以当前路径为起点,不包含磁盘符号,通常使用“..\”符号来访问上级目录中的文件或文件夹. ../Windo ...