Google zbuloi qindra Kushte Gara në Kernel Linux duke përdorur KCSAN

Linux Kernel

Inxhinierë të Google që kontribuojnë në kernelin Linux kanë njoftuar se kanë zbuluar qindra "Kushtet e Garave", në bërthamë duke përdorur KCSAN. Kompania ka kohë që po punon në AddressSanitizer për të gjetur gabime në lidhje me prishjen e kujtesës ose UndefinedBehaviorSanitizer për sjellje të papërcaktuar në kod.

Kësaj radhe, Google ofron një detektor të ri "Kushtet e Garave" për kernelin Linux të quajtur KCSAN (Pastrues i Kernel Concurrency). Këto dobësi kritike nuk janë të reja. Në fakt Kushtet e garës ndodhin kur dy ose më shumë fije në të njëjtin proces hyjnë në të njëjtën vendndodhje memorie njëkohësisht, ku të paktën një nga akseset është për të shkruar, dhe kur fijet nuk përdorin asnjë bravë ekskluzive për të kontrolluar qasjen e tyre në këtë memorje.

Kur plotësohen këto kushte, rendi i hyrjes nuk është përcaktues dhe llogaritja mund të japë rezultate të ndryshme nga një ekzekutim në tjetrin në varësi të këtij urdhri.

Kushtet e garës gjithnjë e më shumë shihen si gabime të njëkohshme të hyrjes dhe janë të vështira për t'u kopjuar dhe diagnostikoni në programe paralele. Kerneli Linux është një sistem softuerësh në shkallë të gjerë, në të cilin paralelizmi intensiv i fijeve dhe ndërthurja e fijeve jo-përcaktuese janë më shumë subjekt i kushteve konkurruese.

Disa situata konkurruese mund të jenë beninje, por shumë prej tyre të identifikuara deri më tani konsiderohen gabime.

Kerneli Linux ofron disa mekanizma për të shmangur dhe menaxhuar këto lloj kushtesh Meqenëse ka mjete të tilla si Thread Analyzer ose KTSAN (Kernel Thread Sanitizer) për të zbuluar gabimet kritike të ekzekutimit në Linux Kernel.

Sidoqoftë, Google, i cili gjithashtu kontribuon në kernelin Linux, kohët e fundit propozoi KCSAN, një detektor i ri i Kushteve të Gara për Kernel, i ngjashëm me KTSAN.

Sipas Google, KCSAN përqendrohet në zbulimin e situatave konkurruese në kodin e bërthamës. Ky detektor dinamik i goditjes kritike është një alternativë ndaj Kernel Thread Sanitizer (KTSAN).

Sipas shpjegimit të Google, KCSAN bazohet në pikat e monitorimit të marrjes së mostrave, ndryshe nga detektori KTSAN, i cili është një detektor kritik i garës para ngjarjes. Prioritetet kryesore në dizajnin e KCSAN janë mungesa e pozitiveve false, shkallëzueshmëria dhe thjeshtësia.

KCSAN përdor mjete përpilimi për të hyrë në memorje. KCSAN është në përputhje me përpiluesit e GCC dhe Clang. Me GCC, kërkon versionin 7.3.0 ose më vonë dhe me Clang, kërkon versionin 7.0.0 ose më të ri.

Në faqen e projektit GitHubMarco Elver i Google shkroi se duke përdorur KCSAN në teste muajin e kaluar, ata gjetën në vetëm dy ditë më shumë se 300 situata thelbësore unike të konkurrencës. KCSAN ofron disa opsione konfigurimi për të personalizuar sjelljen e tij.

“Ne kemi qenë duke përdorur KCSAN përmes Syzkaller për disa javë, dhe kemi gjetur shumë gabime. Fillimisht në Shtator 2019, ne identifikuam më shumë se 300 situata unike konkurrimi brenda vetëm dy ditësh, ”shkroi ai.

Google tha se qasja e përgjithshme bazohet në DataCollider, një detektor tjetër dinamik i situatave konkurruese në modulet e kernelit. Por ndryshe nga DataCollider, KCSAN nuk përdor pikat e monitorimit të pajisjeve, përkundrazi mbështetet në mjetet e përpilimit.

Pikat e monitorimit zbatohen duke përdorur një kodim efikas që ruan llojin, madhësinë dhe adresën e hyrjes në një skedar të gjatë. Përfitimet e përdorimit të pikave të monitorimit fleksibël janë transportueshmëria dhe fleksibiliteti më i madh në kufizimin e aksesit që një pikë monitorimi mund të aktivizojë.

Këtu janë disa nga pikat kryesore që KCSAN bëri për Google:

  • Performanca e lartë: Koha e ekzekutimit të KCSAN është minimale dhe nuk kërkon mbyllje të përbashkët të gjendjes për secilën qasje. Rezultati është performancë shumë më e mirë se KTSAN.
  • Pa memorje shtesë: sipas Google, nuk kërkohet cache. Implementimi aktual përdor një numër të vogël gjatesish për të kodifikuar informacionin e pikës së monitorimit, i cili është i papërfillshëm.
  • Komanda e kujtesës: KCSAN nuk i njeh rregullat e kontrollit të modelit të kujtesës Linux kernel (LKMM). Kjo mund të rezultojë në humbjen e racave kritike (negativë të rremë) krahasuar me një detektor gare para ngjarjes si KTSAN
  • Saktësi: Sipas Google, KCSAN është i pasaktë sepse përdor një strategji të marrjes së mostrave;
  • Kërkon shënim: kërkohet shënim minimal jashtë kohës së ekzekutimit të KCSAN. Në rastin e një dëgjuesi të ngjarjeve parakusht, çdo lëshim çon në pozitive të rreme, e cila është veçanërisht e rëndësishme në kontekstin e bërthamës që përfshin mekanizmat e përshtatur të kohës.
  • Zbulimi i shkrimeve dinamike nga pajisjet: Duke kontrolluar vlerat e të dhënave gjatë konfigurimit të pikës së vëzhgimit, shkrimet dinamike nga pajisjet mund të zbulohen gjithashtu.

Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: AB Internet Networks 2008 SL
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.