WPF软件因中文名无法启动,原因竟是英特尔驱动
2024-3-12 12:54:46 Author: www.chenxublog.com(查看原文) 阅读量:35 收藏

该问题目前已被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,让所有人都遇到这个问题🐷


文章来源: https://www.chenxublog.com/2024/03/12/intel-gpu-driver-make-wpf-broken.html
如有侵权请联系:admin#unsafe.sh