Firefox-ի zlib-rs տեղափոխման ժամանակ մշակողները բախվել են Intel CPU-ում սխալի

Trifecta Tech Foundation, որը զարգացնում է ntpd-rs, sudo-rs, zlib-rs և bzip2-rs ծրագրերը, հայտարարել է Firefox-ի անցման մասին zlib-rs գրադարանին՝ գզման և բացահայտման համար՝ օգտագործելով gzip մեթոդը: zlib-ից zlib-rs անցնելու արդյունքում, բացի հիշողության աշխատանքում կատարած սխալների նկատմամբ պաշտպանության տրամադրելուց, նկատելիորեն բարձրացել է աշխատանքային արդյունավետությունը՝ որոշումներ կատարելիս արագությունը կազմում էր 3.3-32.5 անգամ մեկական բացահայտման գործողություններում և 2.7-10.86 անգամ անընդհատ հոսքի բացահայտման դեպքում:

zlib-rs գրադարանն առկա էր Firefox 151-ի թողարկման մեջ, սակայն նրա ինտեգրումից հետո որոշ օգտվողներ բախվեցին խնդիրների, որոնք հանգեցրել են անհաջող ավարտին թույլատրված սահմաններից դուրս: Նշվում է, որ Rust լեզվով կոդում խնդիրը հանգեցրել է անհաջողության, իսկ C-ի տվյալ իրավիճակը կհանգեցներ գրանցված վնասվածքի՝ առանց տրոհման: 151.0.1 թողարկման մեջ խնդրի լուծումն եղել է zlib-ի հին գրադարանի վերականգնումը:

Հանրային թեստավորման գործընթացում խնդրի առաջին հայտնումը նկատվել է ավելի քան մեկ տարի առաջ հեռավոր հավաքածուների ժամանակ, սակայն մշակողների համակարգերում այն չէր դուրս բերված: Վերջնականապես, մեկ տարվա բետա-թողարկումների փորձարկում után որոշվել է ակտիվացնել zlib-rs Firefox 151-ի թողարկումում: Նոր խնդիրների հաշվետվությունների շարքից հետո և դրանց պատճառների վերլուծությունից հետո պարզվել է, որ կոճղն առաջացել է Intel CPU-ի Raptor Lake 13 և 14 թվային միկրոփի կառավարման սխալից, որն առնչվում էր ոչ համապատասխան ռեգիստրի օգտագործման:

Խնդիրը առաջացել է այն պատճառով, որ LLVM կոդի արտադրողը օգտագործել է «mov byte ptr [rsi + rdi + 1], ch» հրահանգը՝ Հաֆմանի կոդավորման արդյունքները հիշողություն գրելու ժամանակ: Raptor Lake CPU-ում այս հրահանգը գործող ժամանակ, 8-15 բիթերը RCX ռեգիստրից, որը համապատասխանում է հրահանգում նշված CH ռեգիստրին, փոխարենը հիշողություն էին գրանցվում 0-7 բիթերը, որը համապատասխանում է CL ռեգիստրին: Firefox 152-ի թողարկման ընթացքում սխալը լուծվել է՝ շրջանցված լուծմամբ, և փչվելու ավտոժիգը անցել է zlib-rs հիմնական կազմով: Սխալ հրահանգը նկատված է LLVM 22-ում (LLVM 23-ի զարգացման ճյուղում այն չի արտադրվում):

Ընտանիք: opennet.ru

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster