0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Mozilla检测到Firefox出现了大量崩溃事件

Android编程精选 来源:OSC开源社区 2023-08-07 16:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

近日,Mozilla 检测到 Firefox 出现了大量崩溃事件,这个问题主要发生在使用 Linux 系统的用户身上,尤其是使用基于旧版本 Debian 的 Linux 系统上。 经过调查,Mozilla 最后发现这个问题并非由 Firefox 本身引起,而是涉及到 Linux 内核和 Google 的 JavaScript 代码。

这些崩溃事件发生的十分突然,一开始 Mozilla 检测到数以千计使用一个名为 Huayra 的 Debian 发行版的用户受到影响,特别是 Huayra 5(基于 Debian 10)。后续的持续检测发现,这个问题影响了几乎所有基于旧版本 Debian 的发行版。

崩溃事件也并不是随机发生,而是能够 100% 复现。用户只要在 Google 上搜索图片 Firefox 就会出现崩溃,这个问题影响了所有版本的 Firefox 浏览器 —— 无论是最新版本还是非常老的版本,都会崩溃。

结合上面两个条件,Mozilla 的研究人员认定这个问题不是由 Firefox 这边引发的,问题应该是出在 Google 和旧版 Linux 那边,并开始分析这个问题发生的原因。

bc0563d0-3387-11ee-9e74-dac502259ad0.png

Mozilla 随后开始分析 Firefox 在崩溃时的行为,发现崩溃发生在堆栈探测期间。JIT 触及了为下一个 JavaScript 调用保存变量的区域,并不知为何导致了溢出。 第一个奇怪的地方在于,Mozilla 发现 Google 最近对其图像搜索页面进行了更改,该页面现在有一个 JS 函数,Google 在这个单独的函数中分配了 20000 个变量。进一步分析发现,这个函数可能是由 AI 生成的代码。 虽然发现了有这样的问题,不过理论上 Firefox 应该依然不会出现崩溃才对,因为 Linux 会自动扩展堆栈,Mozilla 团队也已经预留了足够的空间,随后他们通过查看受影响进程的内存确认了这一点。

在执行此操作之前,我们进行了堆栈检查并验证了我们分配的额外堆栈内存量不会溢出我们为自己设置的本机堆栈限制。因此,似乎存在我们自我施加的限制与操作系统限制之间的分歧。这在某种程度上取决于发行版,但很混乱:例如,它影响 Debian 10 但不影响 Debian 11。

随后 Mozilla 团队将检查重点放在了 Linux 内核上,结果发现 Linux 内核曾经有一个检查,可以防止对堆栈的访问离堆栈指针太远。特别是在 64KiB+256 字节以外的访问会产生崩溃,而不是扩展堆栈。这个问题在 Linux 4.20 中被修复了,所以使用较新的发行版的用户不受影响。 根据测试,Google 似乎已经在图片搜索中修复了这个问题,不过 Mozilla 仍然在着手研究解决方案,看看是否能为还在使用老系统的用户一劳永逸解决这个问题,以免未来发生同样的情况。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Google
    +关注

    关注

    5

    文章

    1801

    浏览量

    60246
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66812
  • 变量
    +关注

    关注

    0

    文章

    615

    浏览量

    29362

原文标题:Google 有一个函数,20000 个变量……

文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    睿擎平台CoreDump实战指南:系统崩溃现场的完美捕获 | 技术解析

    在嵌入式系统开发中,系统崩溃往往是最令人头疼的问题之一。当程序突然宕机、出现硬故障或断言失败时,如何快速定位根本原因?CoreDump技术为开发者提供一种「时间冻结」的能力,能在系统崩溃
    的头像 发表于 10-29 16:58 3687次阅读
    睿擎平台CoreDump实战指南:系统<b class='flag-5'>崩溃</b>现场的完美捕获 | 技术解析

    CX3设备仅在一个 SS 端口上被检测到,但在同一台 PC 的其他端口上没有被检测到,为什么?

    CX3 设备仅在一个 SS 端口上被检测到,但在同一台 PC 的其他端口上没有被检测到
    发表于 08-14 06:46

    瑞芯微3576,使用FP16模型进行训练,瑞芯微官方接口概率崩溃

    corrupted。之前使用INT8的模型没出现过这个错误。使用的是model_zoo中的aarch64下的librknnrt.so。未崩溃时能正常检测,可以确认崩溃前没有内存泄漏或
    发表于 07-17 13:25

    自定义FX3板USB未检测到是怎么回事?

    板组装后,PC上没有检测到USB,还有什么可做的吗?
    发表于 05-27 07:26

    超高速端口的一侧未检测到设备是怎么回事?

    问题是该设备正在笔记本电脑的一个 3.0 端口中传输数据,但在另一个 3.0端口中却无法检测到。连接到第二个端口时,设备未枚举,其名称未出现在设备管理器中。调试时我们发现 UVCApplnInit
    发表于 05-16 06:11

    Windows11上未检测到FX3设备是什么原因导致的?

    大家好, FX3 设备在 AMD win11 系统上无法检测到,在 intel win11 系统上可以检测到。 在 AMD 系统上检测不到的原因可能是什么?
    发表于 05-15 07:49

    为什么无法检测到LPCxpresso54628 EVK板的SWD端口?

    : 在此之后,Flash Magic 或MCUXPRESSO-IDE . 我在 中收到以下错误MCUXPRESSO-IDE : 错误: 检测到 0 个可用的 SWD 设备。 我可以通过什么方式从这个阶段恢复 MCU ?
    发表于 04-03 07:08

    使用设计工具设计一个DIY PN5180 NFC模块,但它没有检测到NFC卡,为什么?

    我使用设计工具设计一个 DIY PN5180 NFC 模块,但它没有检测到 NFC 卡。为了排除故障,需要检查原理图和元件值是否存在可能的错误。由于我是 NFC 设计的新手、PN5180数据表、AN11740(NFC 天线设计指南)等参考资料上传我的原理图,以及
    发表于 04-01 06:27

    使用OpenVINO™模型的OpenCV进行人脸检测检测到多张人脸时,伺服电机和步入器电机都发生移动是为什么?

    使用OpenVINO™模型的 OpenCV* 进行人脸检测。 使用 cv2.矩形 函数,能够获取检测到的面部的坐标。 检测到多张人脸时,多个坐标被捕获到,伺服电机和步入器电机都发生移动。
    发表于 03-07 06:35

    在Windows® 11上安装OpenVINO™ 2021.4时,安装程序崩溃,安装失败怎么解决?

    在 Windows® 11 上安装OpenVINO™ 2021.4 时,安装程序崩溃,安装失败。
    发表于 03-05 06:50

    检测到错误状态时,ADS1293 ALARMB引脚电平会被拉低的,怎么解决?

    根据手册,当检测到错误状态时,ALARMB引脚电平会被拉低的。 该ALARMB引脚外接上拉电阻,默认情况(没有开启LOD功能)输出为高电平。 但是一开启LOD功能,使能LOD_CN寄存器,也设置
    发表于 01-23 07:32

    ADS1248一旦配置Burnout Current,检测到的值精度降低了很多,为什么?

    跪求指点,据芯片手册里介绍,Burnout Current是用来检测前端传感器失效的,但是现在设计RTD检测模块时,不配置Burnout Current检测精度很高,但是一旦配置Burnout Current,
    发表于 01-10 13:52

    ADS1298为什么无法检测到脑电信号?

    目前可以检测到心电和眼电,无法检测到脑电信号,已知电极没有问题。 自己做的PCB板,ADS1298配置为HR模式,1KSPS,gain=6,采用2.4V参考电压,关闭右腿驱动,3V单电源供电。将
    发表于 01-03 07:18

    江苏多维科技皮特级TMR芯片成功检测到高质量的成人实时心磁信号

    江苏多维科技皮特级TMR芯片成功检测到高质量的成人实时心磁信号
    的头像 发表于 12-16 16:07 515次阅读
    江苏多维科技皮特级TMR芯片成功<b class='flag-5'>检测到</b>高质量的成人实时心磁信号

    ADS8515采用CS和RC引脚启动转换,BUSY引脚检测到被拉低开始转换,但是BUSY引脚一直检测不到高电平,为什么?

    ADS8515采用CS和RC引脚启动转换,RC为低电平DSP通过读总线命令将CS拉低,BUSY引脚检测到被拉低开始转换,但是BUSY引脚一直检测不到高电平。直到重新读写总线命令,BUSY引脚才会复位,不知道是什么原因,按说BUSY引脚
    发表于 12-16 06:57