A Firefox zlib-rs-re való átírása során a fejlesztők hibába ütköztek az Intel CPU-ján

A Trifecta Tech Foundation, amely olyan projekteket fejleszt, mint az ntpd-rs, sudo-rs, zlib-rs és bzip2-rs, bejelentette, hogy a Firefox átáll a zlib-rs könyvtár használatára a gzip módszerrel történő tömörítéshez és kicsomagoláshoz. A memóriahasználat miatti problémák elleni védelem mellett a zlib-ről zlib-rs-re való váltás figyelemre méltó teljesítménynövekedést eredményezett — a végzett tesztek alapján a dekódolási egyedi műveletek esetében 3,3 és 32,5-szörös, míg a folyamatos dekódolásnál 2,7 és 10,86-szoros gyorsulást mutattak.

A zlib-rs könyvtár a Firefox 151 kiadásában került bevezetésre, de az integrálása után néhány felhasználó a határok túllépéséből adódó összeomlási problémákkal szembesült. Megjegyezték, hogy a Rust nyelvű kódban a probléma összeomláshoz vezetett, míg C-ben hasonló helyzet adatvesztéshez vezetett volna anélkül, hogy a rendszer leállt volna. Mint megoldás, a 151.0.1 kiadásában visszaállították a régi zlib könyvtár használatát.

A probléma első megjelenését több mint egy évvel ezelőtt, a korai kiadások tesztelése során észlelték, de a fejlesztők rendszerein nem sikerült reprodukálni. Végül, egy évnyi bétatesztelés után úgy döntöttek, hogy aktiválják a zlib-rs-t a Firefox 151 kiadásában. A problémák újabb sorozatának jelentése és a mintázatok elemzése után kiderült, hogy a hiba a Raptor Lake 13. és 14. generációs Intel CPU mikrokódjában keletkezett, amellyel nem megfelelő regiszter használata volt a probléma.

A probléma abból adódott, hogy az LLVM kódgenerátor a «mov byte ptr [rsi + rdi + 1], ch» utasítást használta a Huffman kódolás eredményeinek memóriaírásakor. Ezen utasítás végrehajtásakor a Raptor Lake CPU-n a regiszter RCX 8-15 bitjei, amelyek a CH regiszterhez tartoztak, a memóriába az 0-7 bitjei, amelyek a CL regiszterhez tartoztak, kerültek. A Firefox 152 kiadásának előkészítése során a hibát kijavítható megoldással orvosolták, és a javítás átkerült a zlib-rs fő összetevőjébe. A problémás utasítás generálását az LLVM 22-ben észlelték (a fejlesztés alatt álló LLVM 23-as ágon nem generálódik).

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster