自从我切换到 Windows 10(Pro)以来,我在使用 Firefox 的多个最新版本时遇到了最奇怪的错误。
每次重启后,Firefox 似乎都完全出问题了:保存的和新标签都是空白的,页面无法加载,程序无法正常退出。当我尝试关闭它时,该进程开始占用更多的 CPU(约 20%),但仅此而已。我必须通过任务管理器将其关闭。
我首先尝试了以下所有方法,但都无济于事:
- 重置个人资料
- 以安全模式启动 Firefox
- 使用其他版本(尝试过标准版、开发者版和夜间版)
- 禁用防病毒软件
- 禁用智能屏幕
- 检查 Windows 事件日志(没有看到有关 Firefox 的任何信息)
- 完全重新安装 Windows 10
唯一似乎暂时有效的办法是重新安装 Firefox。
最后,我发现只需用可执行文件本身的副本替换可执行文件即可解决问题,直到下次重新启动。
副本在各个方面都与原始文件相同。大小相同、MD5 相同、权限相同、属性相同。我所做的就是单击 - 拖动 - 复制程序文件夹中的可执行文件,将旧文件重命名为“firefox old.exe”,将副本重命名为“firefox.exe”。
“firefox old.exe”可执行文件一直显示相同的奇怪行为,而新的可执行文件虽然相同,但可以正常工作。
直到我重新启动。然后我必须再次执行相同的步骤。
据我所知,包括浏览器在内的所有其他程序都运行正常。
有人能告诉我这是怎么回事吗?
同一个可执行文件的两个看似相同的副本怎么会有不同的行为?
有什么线索可以诊断这种情况吗?
更新:此问题并非每次重启时都会发生。
更新 2:如果我先启动正在运行的“firefox.exe”,然后启动之前有问题的“firefox old.exe”,同时另一个仍处于打开状态,它们都可以正常工作。这可能是配置文件问题的一个论据。但话又说回来,清除配置文件并没有改变任何东西。
更新 3:在没有管理员权限的情况下安装和运行 Firefox 不会改变任何东西。另一方面,便携版本 55.0.2(64 位)和安装版 ESR 版本 52.3.0(64 位)不受影响。此外,对于 Firefox 开发版 56.0b3(64 位),只需将 exe 的名称更改为除“firefox”之外的任何名称并保留原样,似乎就可以防止该错误在重启后再次出现。
更新 4:行为似乎有所改变,但我不知道原因。现在,只需运行一次重命名的可执行文件副本(如“firefox2.exe”)并关闭它,正常的“firefox.exe”即可再次运行。我还尝试在安全模式下启动,但这并没有解决问题。奇怪的是,上述“修复”在安全模式下不起作用。尝试扫描注册表以查找更改,但据我所知,我没有找到任何相关内容。
更新 5:我正在尝试使用 Process Monitor 和 Windbg 调试该过程,但我不是专家,我甚至不知道在生成的大量日志中要寻找什么……
更新 6:我终于得到了一些新信息。当我使用参数启动正在运行的 firefox2.exe 时-console
,控制台仅打印以下两行:
Unable to read VR Path Registry from C:\Users\Victor\AppData\Local\openvr\openvrpaths.vrpath
Unable to read VR Path Registry from C:\Users\Victor\AppData\Local\openvr\openvrpaths.vrpath
但是当我运行 firefox.exe 时,出现以下信息:
Unable to read VR Path Registry from C:\Users\Victor\AppData\Local\openvr\openvrpaths.vrpath
Unable to read VR Path Registry from C:\Users\Victor\AppData\Local\openvr\openvrpaths.vrpath
[Parent 592] WARNING: Failed to launch tab subprocess: file z:/build/build/src/ipc/glue/GeckoChildProcessHost.cpp, line 604
[Parent 592] WARNING: Failed to launch tab subprocess: file z:/build/build/src/ipc/glue/GeckoChildProcessHost.cpp, line 604
[Parent 592] WARNING: Failed to launch tab subprocess: file z:/build/build/src/ipc/glue/GeckoChildProcessHost.cpp, line 604
[Parent 592] WARNING: Failed to launch tab subprocess: file z:/build/build/src/ipc/glue/GeckoChildProcessHost.cpp, line 604
[Parent 592] WARNING: Failed to launch tab subprocess: file z:/build/build/src/ipc/glue/GeckoChildProcessHost.cpp, line 604
[Parent 592] WARNING: Failed to launch tab subprocess: file z:/build/build/src/ipc/glue/GeckoChildProcessHost.cpp, line 604
Extension error: [Exception... "Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIMessageSender.sendAsyncMessage]" nsresult: "0xc1f30001 (NS_ERROR_NOT_INITIALIZED)" location: "JS frame :: resource://gre/modules/ExtensionParent.jsm :: _onExtensionBrowser :: line 346" data: no] undefined 346
[[Exception stack...
(完整输出在此处:https://pastebin.com/hZ90jRbz)
当我再次尝试关闭它时:
[Parent 592] WARNING: Failed to launch tab subprocess: file z:/build/build/src/ipc/glue/GeckoChildProcessHost.cpp, line 604
Extension error: [Exception... "Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIMessageSender.sendAsyncMessage]" nsresult: "0xc1f30001 (NS_ERROR_NOT_INITIALIZED)" location: "JS frame :: resource://gre/modules/ExtensionParent.jsm :: _onExtensionBrowser :: line 346" data: no] undefined 346
[[Exception stack...
(完整输出:https://pastebin.com/6d2RkbQY)
更新 7:在谷歌搜索一些控制台输出后,我发现WINE 论坛上的一个主题关于一个听起来有点像我的错误。
该帖写道:
最新的 Firefox 51.0.1(32 位)。Wine 2.0(但在早期版本中行为相同)。当使用 winecfg 设置较新版本的 Windows(例如 Windows 7)然后启动 Firefox 时,它会以一个完全空白的选项卡启动。菜单设置等工作正常,但选项卡是空白的。似乎与此有关:
[Parent 37] WARNING: Failed to launch tab subprocess: file c:/builds/moz2_slave/m-rel-w64-00000000000000000000/build/src/ipc/glue/GeckoChildProcessHost.cpp, line 574
有趣的是,首次安装此 32 位 Win7 前缀后,它会显示选项卡,但关闭并重新启动浏览器后,选项卡全部为空白。有什么想法吗?需要使用更高的 Windows 版本运行,因为某些附加组件和其他程序需要高于 XP Win 版本。
该线程指向错误报告,在其中我找到了这个«修复»:
由于 e10s 现在是默认设置(对于没有附加组件的用户以及在 Win7 上),因此必须将 user.prefs 中的此行从 true 更改为 false,以适应 Firefox 54:
user_pref("browser.tabs.remote.autostart.2", false);
这实际上禁用了多进程执行。这在某种程度上“解决”了这个问题。(某些扩展仍然存在问题,例如 uBlock Origin。)
但为什么呢?
更新 8:现在,经过两次重启后,开发者版本可以正常工作,没有任何变化,而标准版本有错误。我仍然不知道该如何理解这一点。
附言:我也在 Mozilla 和 Microsoft 支持网站上询问过,但还没有得到答复。
答案1
几天前我也遇到了同样的事情。今天我终于让它工作了。以下是我修复它的步骤:
- 使用程序和功能卸载所有版本的 Firefox
- 从 %appdata% 中删除所有 Firefox 内容:漫游、本地和 LocalLow
- 删除所有Mozilla和Mozilla 网站密钥注册表!!!!!HKEY_CURRENT_USER\Software,HKEY_LOCAL_MACHINE\SOFTWARE, 和HKEY_USERS\.DEFAULT\Software
64 位系统用户还需要检查以下额外的键:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node
- 重新安装 Firefox
(如果您有第三方软件允许您删除所有内容,我认为您可以跳过步骤 1 到 3)