时间:2021-05-23
最近有用户反应英伟达显卡更新新版本后开机卡在欢迎界面或黑屏的情况,这是怎么回事呢?今天小编就为大家带来解决办法,一起看看吧
先抛出个结论,之后给分析结果,说明(文中的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热修复驱动
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
净网大师自动退出不能用了的原因以及解决办法: 1、有可能是您使用的不是最新版本,您可以将此旧版本卸载掉,点击下载最新版本的净网大师; 2、手机系统本身的
win8.1系统更新后开机黑屏的原因: 1、显卡驱动问题 因为显卡驱动引起复系统更新后开机启动就会制进入黑屏,用户可以尝试禁止一些没用的显卡驱动或是将显卡驱
win10安装到一半黑屏的解决办法: 1、更新显卡驱动,当显卡驱动需要更新时会出现黑屏; 2、主板的兼容问题引起的黑屏,可考虑刷新主板BIOS; 3、系统
win7卡在欢迎界面的原因是驱动有问题,解决办法如下: 1、开机马上按F8不动到高级选项出现在松手,选“最近一次的正确配置”回车修复,还不行按F8进入安全模式
以苹果手机为例,转接器不支持配件的解决办法是: 1、有些配件可能需要使用最新版本的iOS。请确保更新至最新版本的iOS。 2、如果这是第一次尝试使用这个配件