英伟达显卡更新新版本后开机卡在欢迎界面或黑屏的原因以及解决办法
先抛出个结论,之后给分析结果,说明(文中的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版本后,开机启动过程中,经过上面一系列的异常调用,最终系统会被卡在欢迎界面或个别电脑出现黑屏的情况。
相关阅读:
英伟达为解决Chrome崩溃等问题 发布GeForce热修复驱动
相关文章
- 英伟达GeForce GTX 1070已经正式开售了,对于PC党来说NVIDIA全新一代显卡GeForce GTX 1070/1080无疑已经成为新一代神器,当然对于囊中羞涩的各位来说GTX 1070绝对是首选,2016-06-12
英伟达发布Win10 GeForce系列驱动 为新游戏而备战
微软新一代操作系统Win10发布在即,英伟达也及时推出了新显卡驱动以适配Windows10操作系统,那么接下来随脚本之家一起去看看吧2015-06-28NVIDIA(英伟达)显卡提示温度过高的解决方法?显卡温度过高的原因有哪
这篇文章主要介绍了NVIDIA(英伟达)显卡提示温度过高的解决方法以及出现温度过高的原因有哪些,,需要的朋友可以参考下2015-05-20英伟达k1跑分多少?NVIDIA 英伟达 k1处理器跑分曝光
英伟达k1跑分多少?想知道的朋友就继续往下看,今天小编介绍的是NVIDIA 英伟达 k1处理器跑分哦2014-05-20英伟达Tegra4平板电脑震慑全场 四核平板汇威Fly one性能测试
平板电脑的选择越来越多,但很多朋友对他们的性能却了解不多,给大家介绍一些2013-12-28- 如果你不及时更新你的显卡驱动的话就会出现游戏不完全显示的状况,接下来为大家分享下升级英伟达显卡驱动的具体方法,感兴趣的朋友可以参考下,希望可以帮助到你2013-04-27
最新评论