崩溃啦,我没办法解决!

您的反馈很重要!
头像
zhchgao
帖子: 254
注册时间: 2023年 1月 2日 15:17

Re: 崩溃啦,我没办法解决!

帖子 zhchgao »

另 Microsoft Edge 便携版放哪里运行都可,真是怪事。
图片无欲则刚!凡人不烦!
头像
catsxp
网站管理员
帖子: 4421
注册时间: 2022年 12月 26日 17:41

Re: 崩溃啦,我没办法解决!

帖子 catsxp »

用5.10.4 release复现崩溃,把dump发邮箱
不保证每个Dump文件都能解析,通常只能解析本地最后一次生成的版本
头像
zhchgao
帖子: 254
注册时间: 2023年 1月 2日 15:17

Re: 崩溃啦,我没办法解决!

帖子 zhchgao »

已发,希望能解决。
图片无欲则刚!凡人不烦!
头像
catsxp
网站管理员
帖子: 4421
注册时间: 2022年 12月 26日 17:41

Re: 崩溃啦,我没办法解决!

帖子 catsxp »

OnMojoError 报错崩溃原因概述

简单来说,这个错误的核心是 Mojo IPC 通信链路在浏览器进程和子进程(如渲染进程、GPU进程、工具进程等)建立之初就发生了断裂。浏览器进程因此判定子进程“失联”或“异常”,为了保持浏览器的稳定性和安全性,它主动终止了自己(崩溃)。

BrowserChildProcessHostImpl 是浏览器进程管理子进程的代表,而 OnMojoError 是其内部监听 Mojo 通信错误的一个回调函数。

详细原因分析
Mojo 是 Chromium 中用于进程间通信的现代库。当浏览器进程启动一个子进程时,它们之间会建立一条 Mojo 通信管道。这条管道是它们之间传递消息、命令、数据(如网页内容、GPU指令、网络请求等)的生命线。

OnMojoError 被调用,意味着这条生命线断了。以下是导致断裂的几种常见情况:

1. 子进程启动失败或过早退出
这是最常见的原因。浏览器进程成功启动了子进程,但子进程在初始化阶段就遇到了致命错误并退出了。

子进程自身的崩溃:例如,渲染进程在初始化 V8 JavaScript 引擎、Skia 图形库时发生段错误、访问违规等。

资源不足:系统内存不足、地址空间耗尽、文件句柄用尽等,导致子进程无法完成初始化。

依赖项问题:

某些系统库版本不兼容或缺失(尤其是在 Linux 系统上)。

显卡驱动过旧、有bug或不兼容,导致 GPU 进程无法启动。

沙箱配置过于严格,子进程没有足够的权限访问所需资源。

2. Mojo 管道建立失败
浏览器和子进程之间的 IPC 连接在建立阶段就失败了。

管道端点传递失败:在创建子进程时,浏览器需要通过命令行参数等方式将 Mojo 管道的引导令牌传递给子进程。如果这个传递过程出现问题(例如,命令行参数过长或被截断),子进程将无法连接到浏览器。

平台特定的 IPC 资源限制:在某些操作系统上,用于进程间通信的底层资源(如 socket、通道)达到上限,导致新管道无法创建。

3. 权限或沙箱问题
Chromium 使用沙箱技术来隔离子进程,增强安全性。

沙箱策略过严:为子进程配置的沙箱策略可能阻止了它执行必要的操作(如创建线程、访问某个特定的系统调用),导致进程在初始化 Mojo 时失败。

权限不足:进程试图执行一个它没有权限的操作,被操作系统直接终止。

4. 代码缺陷
Chromium 本身的 Bug:在特定版本或特定代码路径下,可能存在导致 Mojo 初始化或通信失败的代码缺陷。

第三方代码冲突:注入的第三方 DLL(如杀毒软件、屏幕截图工具、输入法等)可能挂钩了系统 API,干扰了 Chromium 的正常 IPC 机制,导致管道损坏。

5. 系统环境异常
系统不稳定:操作系统内核本身存在问题,或者关键系统服务异常。

病毒或恶意软件:破坏了系统的正常运行。

崩溃发生的时间点和流程
启动:用户启动 Chromium 浏览器。

创建子进程:浏览器进程决定启动一个子进程(例如,首次打开标签页需要创建渲染进程)。

建立 Mojo 管道:浏览器进程创建 Mojo 管道,并将引导信息传递给子进程。

错误发生:

情况A:子进程根本没能成功启动或立即退出。

情况B:子进程启动了,但 Mojo 管道在初始化过程中断裂。

触发回调:浏览器进程一端的 Mojo 管道检测到对端已关闭或通信错误,调用 BrowserChildProcessHostImpl::OnMojoError。

进程判定:浏览器进程认为这是一个严重错误,子进程的状态不可靠。由于在启动阶段就发生这种错误,通常意味着浏览器的基础功能无法正常运作。

终止/崩溃:作为一种保护机制,浏览器进程可能会选择主动崩溃,并生成崩溃报告,而不是进入一个不可预测的状态。

排查和解决方法
对于开发者或遇到此问题的用户,可以尝试以下步骤:

查看日志:

启动 Chromium 时加上 --enable-logging --v=1 命令行参数,将日志输出到文件,查看是否有子进程退出的具体原因。

在 Windows 上,查看 Windows 事件查看器中的应用程序日志。

寻找 chrome_debug.log 文件。

禁用硬件加速:

启动时加上 --disable-gpu 参数,排除 GPU 进程和显卡驱动的问题。这是最常见且有效的临时解决方案。

禁用沙箱:

启动时加上 --no-sandbox 参数(注意:这会降低安全性,仅用于测试)。如果加上这个参数后问题消失,说明是沙箱配置或系统权限问题。

清理用户数据:

尝试启动到隐身模式。如果正常,可能是某个扩展程序冲突。

重命名或移动 User Data 目录(会重置所有设置和扩展),以排除用户配置文件损坏。

检查系统环境:

更新显卡驱动程序到最新版本。

运行系统文件检查器(如 Windows 的 sfc /scannow)。

暂时禁用所有杀毒软件或安全软件进行测试。
头像
zhchgao
帖子: 254
注册时间: 2023年 1月 2日 15:17

Re: 崩溃啦,我没办法解决!

帖子 zhchgao »

收到了,谢谢管理员。辛苦了!Cats xp 一直陪伴着我,从初始版一直到现在。见证了它的快速成长,是我电脑上不可缺少的默认程序。出现这个情况可能是我系统的问题,是个例,我试着再通过其它方式来解决它,好在现通过C盘快捷方式启动它能用。再次谢谢管理员,论坛我每天都来几次,你是一个勤劳认真的开发者,为你点赞!
图片无欲则刚!凡人不烦!
头像
zhchgao
帖子: 254
注册时间: 2023年 1月 2日 15:17

Re: 崩溃啦,我没办法解决!

帖子 zhchgao »

问题解决,删除旧驱动,再更新驱动,现在好了。感谢管理员提供的信息。
图片无欲则刚!凡人不烦!
回复