英伟达显卡更新新版本后开机卡在欢迎界面或黑屏的原因以及解决办法

所属分类: 硬件教程 / 显卡 阅读数: 238
收藏 0 赞 0 分享
最近有用户反应英伟达显卡更新新版本后开机卡在欢迎界面或黑屏的情况,这是怎么回事呢?今天小编就为大家带来解决办法,一起看看吧
先抛出个结论,之后给分析结果,说明(文中的dllmain对应dll入口点,模块的入口点函数名不一定名字都是dllmain)

结论:

Dwm.exe进程初始化LdrInitializeThunk内部先映射dll,在一块儿调用这些dll的dllmain,在调用user32的dllmain时,加载英伟达的nvinitx.dll这个模块使用SHGetShellFolder,该函数使用了rpcrt4.dll中的一些数据,但是锁相关数据还没有被初始化(因为按调用顺序先后还没有调用到rpcrt4.dl它的dllmain)就使用,之后导致异常,出现死锁情况。最终导致黑屏或者卡在系统欢迎界面。

分析的简要过程:

1.从卡时获取的dump上看explorer卡在ConnectPort到dwm.exe的一个port。

2.查看dwm.exe中的线程,发现其中一个线程卡在调用SHGetShellFolder函数内部。这个卡之后就导致explorer.exe工作异常,一直卡在链接dwm.exe中的port。

3. 查看锁sechost!SddlSidLookupCritical的状态,发现此锁被dwm.exe主线程占用,没有释放。 仔细分析发现主线程正常情况下不应该释放不了这个临界区。

4.猜测只可能出现什么异常导致没有释放这个临界区。

(上双机调试)调试发现dwm.exe的主线程中英伟达nvinitx.dll的dllmain会调用SHGetFoldPathW函数,这个函数调用的时候,已经占用了锁SddlSidLookupCritical,这个时候在去调用RPCRT4.dll中相关函数,却在调用EnterCriticalSection获取rpcrt4的临界区GlobalMutex出现异常,跳出到shell32中的异常处理函数_GSHandlerCheck_EH,这个时候导致没有释放SddlSidLookupCritical锁,SHGetFoldPathW就返回了。查看了下异常,发现rpcrt4中的临界区该临界区GlobalMutex没有初始化,dllmain 内部很多其它变量值也没有初始化,可以确定是dllmain没有被调用到。

5. ida分析可以知道GlobalMutex的初始化在rpcrt4.dll的dllmain内部 。所以可以知道出问题的原因就是rpcrt4.dll的dllmain没有调用到,那么为什么会导致这个dllmain没有调用掉呢?

6. 分析发现这个SHGetFoldPathW的调用是在nvinitx.dll的dllmain中。

ntdll!LdrpInitializeProcess函数先映射导入表中的dll在调用这些dll中的dllmain函数。

这个出问题环境调试发现rpcr4.dll中dllmain并没有调用到,这个时候gdi32的dllmain函数内部调用loadlibrary加载nvinitx.dll,并调用nvinitx.dll的dllmain函数,但是这个时候调用LdrpLoadDll加载rpcr4.dll的时候,(之前刚映射,这个时候LdrpLoadDll发现rpcr4.dll已经被映射了,所以就不会调用这个rpcr4.dll的dllmain函数)

Loadlibrary调用LdrpLoadDll(这个函数先检查模块rpcr4.dll是否映射,发现已经映射就不会调用这个的dllmain,接下来调用其它函数使用临界区GlobalMutex就出现异常崩溃)这个rpcr4.dll的dllmain会在接下来的ntdll!LdrpRunInitalizeroutines函数内部调用 。

7.更新了英伟达显卡驱动372.54及372.70版本后,开机启动过程中,经过上面一系列的异常调用,最终系统会被卡在欢迎界面或个别电脑出现黑屏的情况。

相关阅读:

英伟达nvidia(N卡)如何设置效果最好

英伟达显卡设置在哪 NVIDIA控制面板打开方法图文介绍

英伟达为解决Chrome崩溃等问题 发布GeForce热修复驱动

更多精彩内容其他人还在看

AMD RX 460解禁 AMD Radeon RX 460显卡详细评测+拆解

AMD在ChinaJoy上同时发布了RX 470及RX 460显卡,RX 470于8月4日解禁,而RX 460的解禁日期是8月8日,下面就详情来看看AMD Radeon RX 460显卡同步评测情况吧
收藏 0 赞 0 分享

哪个更好?AMD RX 480游戏对决GTX 1060

前不久,AMD首席游戏科学家Richard Huddy在上海CJ上被问及两者谁更强的问题时,他表示,RX 480的优势在于DX12异步计算,其实这番话很有意思,Richard给出的提升幅度的比较而非绝对值,对于消费者而言,刨去信仰,在同样的价格之下做选择,必然是看谁的最终水准更高
收藏 0 赞 0 分享

NVIDIA Titan X挑战11K分辨率游戏

根据外媒的测试,Titan X性能整体领先GTX 1080 25-30%,4K@60FPS多能达成,除了A卡合作游戏,领先其目前旗舰Fury X 70%以上不成问题,外媒TeakTown就干了这么一件疯狂的事:单卡运行11K分辨率游戏。我们来了解详情吧
收藏 0 赞 0 分享

显卡性能好坏怎么看 桌面显卡天梯图2016年8月最新篇

显卡天梯图是查看显卡性能好坏的最简单有效的途径,那么,2016年8月份显卡性能的排名如何了?有何变化?对此,本文就为大家带来了2016年8月高清版桌面显卡天梯图,有兴趣的朋友们就来了解下吧
收藏 0 赞 0 分享

AMD Zen ES工程版跑分成绩首曝:成功逆袭

现在,一份AMD Zen工程版(ES)的基准测试成绩曝光,场景是我们非常熟悉的首款DX12游戏《奇点灰烬》自带的BenchMark,这款CPU目前识别出来的是串码1D2801A2M88E4_32/28_N和2D2801A2M88E4_32/28_N两块
收藏 0 赞 0 分享

华硕GTX1060 TURBO显卡发布 华硕GTX1060非公版介绍

最近第三方厂商非公版GTX1060纷纷亮相,特别是华硕方面,不仅有高端猛禽,还有TURBO系列。现在华硕GTX1060 TURBO显卡发布,来看看华硕GTX1060非公版介绍吧
收藏 0 赞 0 分享

GTX1060显卡3GB版售价确认 性能或达GTX9601.4倍

GTX1060显卡3GB版售价确认,性能强大,或达GTX9601.4倍。采用1152个流处理器,采用3GB GDDR5显存,频率为1.7Ghz,TDP为120W,单6Pin接口,来看看详细信息吧
收藏 0 赞 0 分享

非公RX 480对比GTX 1060哪个好?RX 480对比GTX 1060全面对比评测

在RX 480推出不久后,他们立马推出GTX 1060进行狙击,当非公版的RX 480和GTX 1060逐渐推出,他们终于可以解开束缚发挥全部的实力,下面就详情来看看RX 480对比GTX 1060对比吧
收藏 0 赞 0 分享

AMD RX系Crossfire性能怎么样?RX 480&470三种组合的CF双卡对比评测

AMD的RX 480主要是面向于中高端显卡市场,RX 480虽然在功耗方面略输一筹,但能支持Crossfire双卡工作,为了深入地了解AMD RX系列Crossfire的表现,下面就来看看RX 480&470 、RX 470 CF双卡和RX 480 CF双卡三种组合的CF双卡对比
收藏 0 赞 0 分享

移动版GTX1060和桌面级GTX1060有多大差距?

撇去外观不谈,咱们直接开门见山来看看大家最想知道的:“移动版”GTX1060究竟和桌面级GTX1060有多大差距
收藏 0 赞 0 分享
查看更多