91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Google在一個函數(shù)中放入2萬個變量引發(fā)Firefox大崩潰

OSC開源社區(qū) ? 來源:OSC開源社區(qū) ? 2023-06-26 16:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

近日,Mozilla 檢測到 Firefox 出現(xiàn)了大量崩潰事件,這個問題主要發(fā)生在使用 Linux 系統(tǒng)的用戶身上,尤其是使用基于舊版本 Debian 的 Linux 系統(tǒng)上。

經(jīng)過調(diào)查,Mozilla 最后發(fā)現(xiàn)這個問題并非由 Firefox 本身引起,而是涉及到 Linux 內(nèi)核和 Google 的 JavaScript 代碼。

這些崩潰事件發(fā)生的十分突然,一開始 Mozilla 檢測到數(shù)以千計使用一個名為 Huayra 的 Debian 發(fā)行版的用戶受到影響,特別是 Huayra 5(基于 Debian 10)。

后續(xù)的持續(xù)檢測發(fā)現(xiàn),這個問題影響了幾乎所有基于舊版本 Debian 的發(fā)行版。

崩潰事件也并不是隨機發(fā)生,而是能夠 100% 復(fù)現(xiàn)。用戶只要在 Google 上搜索圖片 Firefox 就會出現(xiàn)崩潰,這個問題影響了所有版本的 Firefox 瀏覽器 —— 無論是最新版本還是非常老的版本,都會崩潰。

結(jié)合上面兩個條件,Mozilla 的研究人員認定這個問題不是由 Firefox 這邊引發(fā)的,問題應(yīng)該是出在 Google 和舊版 Linux 那邊,并開始分析這個問題發(fā)生的原因。

40b175c4-1349-11ee-962d-dac502259ad0.png

Mozilla 隨后開始分析 Firefox 在崩潰時的行為,發(fā)現(xiàn)崩潰發(fā)生在堆棧探測期間。

JIT 觸及了為下一個 JavaScript 調(diào)用保存變量的區(qū)域,并不知為何導(dǎo)致了溢出。

第一個奇怪的地方在于,Mozilla 發(fā)現(xiàn) Google 最近對其圖像搜索頁面進行了更改,該頁面現(xiàn)在有一個 JS 函數(shù),Google 在這個單獨的函數(shù)中分配了 20000 個變量。

進一步分析發(fā)現(xiàn),這個函數(shù)可能是由 AI 生成的代碼。

雖然發(fā)現(xiàn)了有這樣的問題,不過理論上 Firefox 應(yīng)該依然不會出現(xiàn)崩潰才對,因為 Linux 會自動擴展堆棧,Mozilla 團隊也已經(jīng)預(yù)留了足夠的空間,隨后他們通過查看受影響進程的內(nèi)存確認了這一點。

在執(zhí)行此操作之前,我們進行了堆棧檢查并驗證了我們分配的額外堆棧內(nèi)存量不會溢出我們?yōu)樽约涸O(shè)置的本機堆棧限制。

因此,似乎存在我們自我施加的限制與操作系統(tǒng)限制之間的分歧。

這在某種程度上取決于發(fā)行版,但很混亂:例如,它影響 Debian 10 但不影響 Debian 11。

隨后 Mozilla 團隊將檢查重點放在了 Linux 內(nèi)核上,結(jié)果發(fā)現(xiàn) Linux 內(nèi)核曾經(jīng)有一個檢查,可以防止對堆棧的訪問離堆棧指針太遠。

特別是在 64KiB+256 字節(jié)以外的訪問會產(chǎn)生崩潰,而不是擴展堆棧。

這個問題在 Linux 4.20 中被修復(fù)了,所以使用較新的發(fā)行版的用戶不受影響。

根據(jù)測試,Google 似乎已經(jīng)在圖片搜索中修復(fù)了這個問題,不過 Mozilla 仍然在著手研究解決方案,看看是否能為還在使用老系統(tǒng)的用戶一勞永逸解決這個問題,以免未來發(fā)生同樣的情況。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    614

    瀏覽量

    29915
  • LINUX內(nèi)核
    +關(guān)注

    關(guān)注

    1

    文章

    321

    瀏覽量

    23212
  • Debian
    +關(guān)注

    關(guān)注

    0

    文章

    79

    瀏覽量

    2123

原文標題:Google在一個函數(shù)中放入2萬個變量,引發(fā)Firefox大崩潰

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    函數(shù)指針介紹

    這種函數(shù)應(yīng)該都很熟悉,其實就是函數(shù),然后返回值是 int 類型,是
    發(fā)表于 01-21 08:11

    請問如何從函數(shù)內(nèi)部判斷本函數(shù)是否是成員函數(shù)還是非成員函數(shù)?

    如何從函數(shù)內(nèi)部判斷本函數(shù)是否是成員函數(shù)還是
    發(fā)表于 01-06 06:30

    C語言函數(shù)指針的六高級的應(yīng)用場景

    函數(shù)指針是種非常強大的編程工具,它可以讓我們以更加靈活的方式編寫程序。本文中,我們將介紹 6 函數(shù)指針的高級應(yīng)用場景,并貼出相應(yīng)的代碼
    發(fā)表于 01-04 12:25

    如何搞定嵌入式 C語言中的全局變量問題?

    時序,起承轉(zhuǎn)合。但是盡量不要用來傳遞參數(shù),這個很忌諱的。 2、盡量把變量的作用范圍控制使用它的模塊里面,如果其他模塊要訪問,就開個讀或?qū)?b class='flag-5'>函數(shù)接口出來,嚴格控制訪問范圍。這
    發(fā)表于 12-16 06:54

    如何用函數(shù)指針調(diào)用函數(shù)

    給大家舉例子: int Func(int x);/*聲明函數(shù)*/ int (*p) (int x);/*定義
    發(fā)表于 12-11 06:26

    第7章 變量進階與點陣LED(7.1 7.2)

    知識——變量的作用域和存儲類別。 7.1變量的作用域 所謂的作用域就是指變量起作用的范圍,也是變量的有效范圍。變量按他的作用域可以分為局部
    的頭像 發(fā)表于 12-10 16:25 ?354次閱讀

    rt thread 按照官方視頻一個一個字敲都不行,連main函數(shù)都無法進入,為什么?

    教程,移植時修改gd官方啟動文件將bl main 改為了 bl entry 目前都還好 直可以執(zhí)行到這里,然后就不動了 idle.c 兩函數(shù)(rt_thread_def
    發(fā)表于 09-28 07:43

    【原創(chuàng)】TDMS設(shè)置下一個寫入位置函數(shù)的摸索

    開時,必須啟用緩沖 3、必須先調(diào)用“tdms設(shè)置下一個寫入位置”再調(diào)用高級tdms寫入函數(shù) 4、寫入函數(shù)完成后,必須使用高級tdms關(guān)閉,利用刷新是無用的 5、高級tdms打開函數(shù),生
    發(fā)表于 08-11 20:54

    Google Fast Pair服務(wù)簡介

    設(shè)備。多個Seeker設(shè)備可以擁有同一個Google Account 。Provider和第一個Seeker建立關(guān)聯(lián)的過程稱為initial pairing;Provider和第二
    發(fā)表于 06-29 19:28

    解鎖LuatOS新世界:二次開發(fā)必備的3核心常識

    起來了解LuatOS開發(fā)需要熟悉的幾個常識。 ? 、匿名函數(shù) Lua代碼里面,經(jīng)常看到?jīng)]有名字的函數(shù)。 這種函數(shù)定義之后,要么馬上運行,
    的頭像 發(fā)表于 06-23 16:08 ?371次閱讀
    解鎖LuatOS新世界:二次開發(fā)必備的3<b class='flag-5'>個</b>核心常識

    突破LuatOS開發(fā)瓶頸:三二次開發(fā)必備知識揭秘!

    。 ? 、匿名函數(shù) Lua代碼里面,經(jīng)常看到?jīng)]有名字的函數(shù)。 這種函數(shù)定義之后,要么馬上運行,要么作為另
    的頭像 發(fā)表于 06-23 15:05 ?412次閱讀
    突破LuatOS開發(fā)瓶頸:三<b class='flag-5'>個</b>二次開發(fā)必備知識揭秘!

    Google推出全新Cloud WAN解決方案

    202 接入點(PoP),由超過 200 英里的光纖和 33 條海底光纜提供支持,并有 99.99% 可靠性服務(wù)水平協(xié)議(SLA)作為后盾,Google 的網(wǎng)絡(luò)提供了
    的頭像 發(fā)表于 05-14 16:48 ?1435次閱讀

    函數(shù)指針的六常見應(yīng)用場景

    函數(shù)指針嵌入式開發(fā)中有著廣泛的應(yīng)用,它讓代碼更加靈活,減少冗余,提高可擴展性。很多時候,我們需要根據(jù)不同的情況動態(tài)調(diào)用不同的函數(shù),而函數(shù)指針正是實現(xiàn)這
    的頭像 發(fā)表于 04-07 11:58 ?1480次閱讀
    <b class='flag-5'>函數(shù)</b>指針的六<b class='flag-5'>個</b>常見應(yīng)用場景

    必看!15C語言常見陷阱及避坑指南

    ? C語言雖強大,但隱藏的“坑”也不少!稍不留神就會導(dǎo)致程序崩潰、數(shù)據(jù)異常。本文整理15高頻陷阱,助你寫出更穩(wěn)健的代碼! ? 陷阱1:運算符優(yōu)先級混淆? 問題:運算符優(yōu)先級不同可能導(dǎo)致計算順序錯誤
    的頭像 發(fā)表于 03-16 12:10 ?1823次閱讀

    關(guān)于STM32 CAN通信發(fā)送函數(shù)HAL_CAN_AddTxMessage()的最后參數(shù)填0和定義變量取地址的問題求解

    問題: 關(guān)于STM32 CAN通信 發(fā)送函數(shù) HAL_CAN_AddTxMessage()的最后參數(shù)填0和定義
    發(fā)表于 03-11 08:22