„Google“ naudodama KCSAN „Linux“ branduolyje atrado šimtus lenktynių sąlygų

Linux Kernel

„Google“ inžinieriai kurie prisideda prie „Linux“ branduolio paskelbė, kad naudodamiesi KCSAN branduolyje atrado šimtus „lenktynių sąlygų“. Bendrovė jau seniai dirba su „AddressSanitizer“ ieškodama klaidų, susijusių su atminties sugadinimu, arba „UndefinedBehaviorSanitizer“ dėl neapibrėžto elgesio kode.

Šį kartą, „Google“ siūlo naują „Race Conditions“ detektorių, skirtą „Linux“ branduoliui, vadinamą KCSAN (Branduolio sutapimo sanitaras). Šie kritiniai trūkumai nėra naujiena. Iš tikrųjų Lenktynių sąlygos atsiranda, kai dvi ar daugiau to paties proceso gijų vienu metu pasiekia tą pačią atminties vietą, kur bent viena iš prieigų turi būti parašyta, o kai gijos nenaudoja jokių išskirtinių spynų, kad valdytų jų prieigą prie šios atminties.

Kai tenkinamos šios sąlygos, prieigos tvarka nėra lemiama ir skaičiavimai gali suteikti skirtingus rezultatus iš vieno važiavimo į kitą, atsižvelgiant į šią tvarką.

Varžybų sąlygos vis dažniau laikomos vienu metu prieinamomis klaidomis ir jas sunku pakartoti ir diagnozuoti lygiagrečiomis programomis. „Linux“ branduolys yra plataus masto programinės įrangos sistema, kurioje intensyviam siūlų lygiagretumui ir nedeterministiniam siūlų persipynimui yra labiau taikomos konkurencijos sąlygos.

Kai kurios varžybinės situacijos gali būti gerybinės, tačiau daugelis jų iki šiol nustatytos laikomos klaidomis.

„Linux“ branduolys pateikia keletą mechanizmų, leidžiančių išvengti ir valdyti tokio tipo sąlygas nes yra įrankių, tokių kaip „Thread Analyzer“ arba „KTSAN“ („Kernel Thread Sanitizer“) kritinėms „Linux“ branduolio vykdymo klaidoms aptikti.

Tačiau „Google“, taip pat prisidedanti prie „Linux“ branduolio, neseniai pasiūlė KCSAN, naujas branduolio lenktynių sąlygų detektorius, panašus į KTSAN.

Pasak „Google“, KCSAN daugiausia dėmesio skiria konkurencinių situacijų atradimui branduolio kode. Šis dinamiškas kritinių įvykių detektorius yra branduolio sriegio dezinfekavimo priemonės (KTSAN) alternatyva.

Pagal „Google“ paaiškinimą, KCSAN yra pagrįstas mėginių ėmimo stebėjimo taškais, skirtingai nei KTSAN detektorius, kuris yra kritinis lenktynių detektorius prieš renginį. Pagrindiniai KCSAN dizaino prioritetai yra klaidingų teigiamų duomenų trūkumas, mastelio padidinimas ir paprastumas.

KCSAN naudoja kompiliavimo įrankius, kad pasiektų atmintį. KCSAN yra suderinamas su GCC ir Clang kompiliatoriais. Naudojant GCC, reikia 7.3.0 arba naujesnės versijos, o „Clang“ - 7.0.0 arba naujesnės versijos.

Projekto „GitHub“ puslapyje„Google“ atstovas Marco Elveris rašė, kad praėjusį mėnesį naudodamiesi KCSAN bandymuose, per dvi dienas jie rado daugiau nei 300 unikalių pagrindinių varžybų situacijų. KCSAN pateikia keletą konfigūravimo parinkčių, kad pritaikytų savo elgesį.

„Mes keletą savaičių naudojome KCSAN per„ Syzkaller “ir radome daug klaidų. Iš pradžių 2019 m. Rugsėjo mėn. Per dvi dienas nustatėme daugiau nei 300 unikalių varžybų situacijų “, - rašė jis.

„Google“ teigė, kad bendras požiūris pagrįstas „DataCollider“, kitas dinaminis konkurencinių situacijų detektorius branduolio moduliuose. Tačiau, skirtingai nei „DataCollider“, KCSAN nenaudoja aparatūros stebėjimo taškų, o remiasi kompiliavimo įrankiais.

Stebėjimo taškai įgyvendinami naudojant efektyvų kodavimą, kuris išsaugo tipą, dydį ir prieigos adresą ilgame faile. Lankstių stebėjimo taškų naudojimo pranašumai yra perkeliamumas ir didesnis lankstumas ribojant prieigą, kurią gali suaktyvinti stebėjimo taškas.

Štai keletas pagrindinių dalykų, kuriuos KCSAN pateikė „Google“:

  • Didelis našumas: KCSAN vykdymo laikas yra minimalus ir nereikalauja bendros prieigos užrakinimo kiekvienai prieigai. Rezultatas yra daug geresnis nei KTSAN.
  • Nėra papildomos atminties: „Google“ duomenimis, talpyklos nereikia. Dabartiniame diegime stebėjimo taško informacijai užkoduoti naudojamas nedidelis ilgių skaičius, kuris yra nereikšmingas.
  • Atminties komanda: KCSAN nežino „Linux“ branduolio atminties modelio (LKMM) valdymo taisyklių. Tai gali lemti kritinių lenktynių praradimą (klaidingus neigiamus duomenis), palyginti su prieš varžybas vykstančiu varžybų detektoriumi, tokiu kaip KTSAN
  • Tikslumas: Pasak „Google“, KCSAN yra netikslus, nes naudoja atrankos strategiją;
  • Būtina anotacija: minimalus komentaras reikalingas ne KCSAN vykdymo metu. Jei įvykio klausytojas yra išankstinė sąlyga, bet koks praleidimas sukelia klaidingą teigiamą informaciją, o tai ypač svarbu branduolio, kuriame yra pasirinktiniai laiko mechanizmai, kontekste.
  • Dinaminių įrašų iš įrenginių aptikimas: Tikrinant duomenų reikšmes stebėjimo taško sąrankos metu, taip pat galima aptikti dinaminius įrašus iš įrenginių.

Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Už duomenis atsakingas: AB Internet Networks 2008 SL
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.