Google pomocou KCSAN objavil v Linuxovom jadre stovky Race Race

Linux Kernel

Inžinieri Google ktoré prispievajú k jadru Linuxu oznámili, že pomocou jadra KCSAN objavili v jadre stovky „závodných podmienok“. Spoločnosť už dlho pracuje na vyhľadávaní chýb súvisiacich s poškodením pamäte alebo UndefinedBehaviorSanitizer na nedefinované správanie v kóde.

Tentoraz Google ponúka nový detektor „Race conditions“ pre jadro Linuxu s názvom KCSAN (Sanitátor súbežnosti jadra). Tieto kritické chyby zabezpečenia nie sú nové. V skutočnosti Podmienky rasy nastanú, keď dva alebo viac vlákien v rovnakom procese pristupuje súčasne na to isté miesto v pamäti, kde aspoň jeden z prístupov má zapisovať a keď vlákna nepoužívajú na kontrolu svojho prístupu do tejto pamäte žiadne exkluzívne zámky.

Ak sú tieto podmienky splnené, poradie prístupu nie je deterministické a výpočet môže poskytnúť rôzne výsledky z jedného behu na druhý v závislosti od tohto poradia.

Podmienky pretekov sa čoraz viac považujú za chyby súbežného prístupu a je ťažké ich duplikovať a diagnostikovať v paralelných programoch. Linuxové jadro je rozsiahly softvérový systém, v ktorom súbežne náročné na vlákna a nedeterministické vkladanie vlákien viac podliehajú konkurenčným podmienkam.

Niektoré konkurenčné situácie môžu byť benígne, ale mnohé z nich sa doposiaľ identifikujú ako chyby.

Jadro Linuxu poskytuje niekoľko mechanizmov na zabránenie a správu týchto typov podmienok Pretože na detekciu kritických chýb pri spustení v jadre systému Linux existujú nástroje ako Thread Analyzer alebo KTSAN (Kernel Thread Sanitizer).

Google, ktorý tiež prispieva do linuxového jadra, však nedávno navrhol KCSAN, nový detektor Race podmienok pre jadro, podobný KTSAN.

Podľa Google sa KCSAN zameriava na objavovanie konkurenčných situácií v kóde jadra. Tento dynamický detektor kritických zásahov je alternatívou k produktu Kernel Thread Sanitizer (KTSAN).

Podľa vysvetlenia spoločnosti Google, KCSAN je založený na vzorkovaní monitorovacích bodov, na rozdiel od detektora KTSAN, čo je kritický detektor rasy pred udalosťou. Kľúčovými prioritami v dizajne KCSAN sú nedostatok falošných poplachov, škálovateľnosť a jednoduchosť.

KCSAN používa na prístup do pamäte kompilačné nástroje. KCSAN je kompatibilný s kompilátormi GCC a Clang. Pre GCC vyžaduje verziu 7.3.0 alebo novšiu a pre Clang vyžaduje verziu 7.0.0 alebo novšiu.

Na stránke GitHub projektuMarco Elver z Googlu napísal, že pomocou KCSAN v testoch minulý mesiac našli za pouhé dva dni viac ako 300 jedinečných základných konkurenčných situácií. KCSAN poskytuje niekoľko možností konfigurácie na prispôsobenie svojho správania.

"Používame KCSAN cez Syzkaller už niekoľko týždňov a našli sme veľa chýb." Pôvodne v septembri 2019 sme identifikovali viac ako 300 jedinečných konkurenčných situácií len za dva dni, “napísal.

Google uviedol, že celkový prístup je založený na DataCollider, ďalší dynamický detektor konkurenčných situácií v jadrových moduloch. Ale na rozdiel od DataCollider, KCSAN nepoužíva hardvérové ​​monitorovacie body, ale spolieha sa na kompilačné nástroje.

Monitorovacie body sa implementujú pomocou efektívneho kódovania, ktoré ukladá typ, veľkosť a prístupovú adresu do dlhého súboru. Výhody použitia flexibilných monitorovacích bodov sú prenosnosť a väčšia flexibilita pri obmedzení prístupu, ktorý môže monitorovací bod aktivovať.

Tu uvádzame niektoré kľúčové body, ktoré spoločnosť KCSAN uviedla pre Google:

  • Vysoký výkon: Runtime KCSAN je minimálny a nevyžaduje pre každý prístup zdieľané blokovanie stavu. Výsledkom je oveľa lepší výkon ako v prípade KTSAN.
  • Žiadna ďalšia pamäť: podľa Googlu nie je nutná žiadna vyrovnávacia pamäť. Súčasná implementácia používa na zakódovanie informácií o monitorovacom bode malý počet dĺžok, čo je zanedbateľné.
  • Príkaz do pamäte: KCSAN nepozná pravidlá kontroly linuxového pamäťového modelu (LKMM). To môže mať za následok stratu kritických závodov (falošné negatívy) v porovnaní s detektorom závodov pred udalosťou, ako je KTSAN
  • presnosť: Podľa spoločnosti Google je KCSAN nepresný, pretože používa stratégiu vzorkovania;
  • Vyžaduje anotáciu: mimo runtime KCSAN sa vyžaduje minimálna anotácia. V prípade poslucháča udalosti predbežných udalostí vedie akékoľvek vynechanie k falošným poplachom, čo je obzvlášť dôležité v kontexte jadra, ktoré obsahuje vlastné mechanizmy časovania.
  • Detekcia dynamických zápisov zo zariadení: Kontrolou hodnôt údajov počas nastavenia sledovaného bodu možno tiež zistiť dynamické zápisy zo zariadení.

Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Za údaje zodpovedá: AB Internet Networks 2008 SL
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.