桌面端|Electron 崩溃问题分析(!crash_reporter::DumpWithoutCrashing() [crashpad.cc : 262 +)

坑坑不断,开头先说结果,这个崩溃是 Electron 误报,但最好还是要处理,不然崩溃率没法用了。

起因

开开心心过 2024 年元旦,回来第一天上班发现发的新版本崩溃率飙升,这是一个十分恐怖的事情。

分析

锁定问题

突然出现的问题是一致的,虽然分成3份,是因为 mac / windows 都有出现,且不同的架构下报错堆栈不一致。

分析原因

急忙分析问题,因为这个版本从之前使用的 Electron 20.3.12 升级到稳定的 27.1.3 版本,跨了多个大版本,所以第一怀疑就是升级出问题了(最后证明也是跟升级相关,但不是升级的问题)。

先根据最后报错的堆栈信息,排查到这应该是 Chromium 内核发出来的崩溃:

这种网上确实没解,搜不到一点,我们还是要从堆栈里找原因:

可以看到崩溃堆栈出现在一个资源加载类里,看一下 GPT 怎么说的:

能想到是不是哪个资源加载导致整个页面崩溃了?

重现问题

后面发现在开发环境中,也有人上报该崩溃,但上线前被我们忽略了,而且量也非常大,在上线前没有关注开发测试的崩溃数据,问了一圈也没人出现崩溃场景,所以十分很奇怪,这崩溃看起来这么频繁,为什么没有人有感知?

再细究,发现自己的设备也会上报该崩溃,这就好办了,盯着崩溃产生过程来看:

发现启动后自动生成三个崩溃文件去上报 ...

这实锤了,这崩溃没有任何现象,但就是会产生崩溃文件,而且看起来崩溃率是 100% ...

可重现就好办了,最终发现是渲染层的框架页面上有段可疑报错:

细究下来,找到:

基础图标库加载因未包括域名,而导致在桌面端加载到 gaodingpro://xxx 导致的报错。

解决问题

很简单,找到基建的小伙伴补充了域名规则,不再有这个 Error 后,也不会再启动时产生崩溃信息了。

至此解决。

后续

这个问题由来已久,图标库也从来没有用到,一直也是依赖进来的。前一个版本还不会上报这个崩溃,为什么这个版本突然上报了?

只能是猜测是 chromium 内核升级后,把这类问题的优先级提高了,从 Error 提高到 FATAL,导致被 Electron 崩溃采集捕获到,具体源码改动就难找了。好在虚惊一场 ~

这也带给我们思考:

  1. 在上线前要关注开发、测试环境下的崩溃问题。
  2. 渲染页面的 JS Error 不能放过一点,说不定哪天它就升级了。
  3. Electron 确实真坑,像这种要去 chromium 源码里找答案,而不是 Electron 源码,也不会体现在 Electron 各版本升级说明中。

感谢阅读,如果对你有用请点个赞 ❤️

相关推荐
清水迎朝阳3 天前
客户端软件 — 用户统计方案
服务器·c++·客户端·用户统计
upgrador7 天前
桌面应用开发:Electron 与 NSIS 的关系、打包流程及 Windows 本地构建实战
javascript·windows·electron
盒子里的加菲猫8 天前
什么?不会C语言也可以搭建窗口级应用程序?(Electron)
c语言·开发语言·electron
薛定谔的猫-菜鸟程序员10 天前
基于 Electron 的本地短视频解析与下载工具:架构设计与工程实践
java·electron·音视频
imber10 天前
别把多平台发布当复制粘贴:一套可复用的内容工程工作流
electron
imber10 天前
Visual Muse 三平台真实发布验收
electron
前端逗比逗11 天前
Electron 全维度完整配置手册(最新稳定版,适配 Electron 25+)
前端·electron
GuWenyue12 天前
等AI回复卡顿到劝退?Vue3+DeepSeek流式输出实战,70行代码实现打字机效果
前端·人工智能·客户端
寒水馨14 天前
Windows下载、安装electron-v43.2.0(附安装包electron-v43.2.0-win32-x64.zip)
javascript·windows·typescript·electron·跨平台·桌面应用·chromium
寒水馨14 天前
macOS下载、安装electron-v43.2.0(附安装包electron-v43.2.0-darwin-arm64.zip)
javascript·macos·electron·node.js·跨平台·桌面应用开发·开源框架