文章

Chrome浏览器内打开其他软件两次必定崩溃

bug描述

最近发现了一个bug,Chrome浏览器经常在打开下载文件夹或通过URL调起软件时崩溃,而且很容易复现。但我的另一台电脑没有这个问题,两台电脑都是win11系统,Chrome版本都是最新的,后来也装了测试版,也有这个问题。

bug原因

Directory Opus + win11 + 搜狗输入法或微信输入法

问题解决

该问题已经在DOpus最新测试版(13.6.3.0)中修复,参考官方论坛BUG反馈帖子:Chrome Crashes with DOpus and Chinese Input Methods on Windows 11 – Help & Support – Directory Opus Resource Centre

下面是这个帖子的大概内容:

背景

自从Windows 11发布以来,使用Directory Opus(DOpus)的中国用户遇到了一个问题:将DOpus与搜狗/微信输入法结合使用会导致Chrome崩溃。以下是一些来自中国互联网的帖子,记录了这个问题:

需要注意的是,这些Chrome崩溃发生在以下特定情况下:

  1. 在下载页面点击“在文件夹中打开”
  2. 任何启动外部应用程序的场景(例如,在Telegram中点击“在Telegram中查看”) 总结来说,崩溃发生在Chrome需要调用shell32.dll时。

附加信息

我还尝试使用x64dbg附加到chrome.exe,并发现了可能的问题原因:shell32.dll访问了一个空指针指向的内存。这个问题是因为dopuslib.dll中的一个函数调用了TlsSetValue,导致shell32.dll读取的TLS值不正确。然而,切换回内置的Windows输入法会在dopuslib.dll中增加一个TlsFree步骤,使其正常工作。

复现步骤

  1. 安装Windows 11
  2. 安装Chrome的官方版本
  3. 安装DOpus
  4. 安装搜狗输入法并切换到它
  5. 在Chrome中打开https://t.me/IbDirectoryOpusGroup并重复点击页面上的“在Telegram中查看”按钮

总结

因此,我想知道DOpus是否可以尝试解决这个问题,或者至少提供关于DOpus注册的ShellExecuteHooks的作用信息。如果它的作用不是至关重要,我建议中国用户自己删除这个注册表键。 [接下来的对话涉及技术细节,主要是关于如何解决这个问题的讨论。] 最后,版本13.6.3(Beta)似乎已经修复了这个问题。版本13.6.x Beta的特性将被合并到版本13.7中。

本文由作者按照 CC BY 4.0 进行授权