该问题目前已被intel修复
起因
最近在测试IoT Power客户端
时,遇到了一个神奇的问题:软件打不开了。
排查原因的时候,我发现把exe文件名改成纯英文,就能正常打开了
一般来说这也正常,最近代码更新了不少东西,说不准哪里改出来的问题。
但我还是把原因想得太简单了
排查
既然中文文件名会报错,那我进vs调试一下,看看哪一行炸了,不就知道原因了?
当我一行一行调试的时候,软件在我意想不到的地方崩了:
public MainWindow()
{
InitializeComponent();
}
是的,它在InitializeComponent();
这一行,直接没有任何报错,exe就终止了运行,返回值是0xc0000409
,完全摸不着头脑
我想着:既然是改出来的问题,我查查是从哪个版本开始出的问题,不就直到原因了?
结果我测试了半年前的软件版本,依旧可以复现该问题。半年前的版本是不可能出现这个问题的
我又测试了一下我写的另一款软件llcom
,依旧可以复现该问题,这就相当奇怪了
我把系统升级到了最新版本,重启会问题依旧
在同事的电脑上,进一步测试,该问题无法复现,说明是我的电脑环境有什么问题
深入
既然知道了是我电脑的问题,那么有两个点要确认一下:
- 所有GUI软件都是这样吗?还是说只有wpf软件受影响?
- 是什么导致了这个问题?
我新建了一个空白的wpf工程用于测试
对于第一个问题,我测试了avalonia
框架编写的另一个软件image2display
,完全正常,说明只有wpf受到了影响
第二个问题,我尝试使用了火绒剑,抓取了中英文软件名时运行的情况
这里可以看到,如果软件正常运行,下面立即就是Intel\ShaderCache
路径下的操作,难道说,是英特尔软件的问题?
验证
我的电脑是英特尔集成显卡,首先我尝试将驱动升级到最新版本:英特尔® Arc™ 和锐炬® Xe 显卡 – Windows Graphics Driver 31.0.101.5333
很遗憾,最新版依旧有这个bug
接着我强制卸载删除了显卡驱动,这样可以强制微软获取出厂时的默认驱动版本,也许可以解决这个问题
在卸载驱动后,win11自动帮我装上了31.0.101.4575
版本的驱动
测试完全正常,wpf软件可以正常打开了
解决
我把bug发到了英特尔的反馈论坛,希望他们会解决吧,不过也可能完全不理会这个bug,让所有人都遇到这个问题🐷