Natuklasan ng Google ang daan-daang Mga Kundisyon ng Lahi sa Linux Kernel gamit ang KCSAN

Linux Kernel

Mga inhinyero ng Google na nag-aambag sa kernel ng Linux ay inihayag na natuklasan nila ang daan-daang mga "Kundisyon ng Lahi" sa kernel gamit ang KCSAN. Matagal nang nagtatrabaho ang kumpanya sa AddressSanitizer upang makahanap ng mga pagkakamali na nauugnay sa katiwalian sa memorya o UndefinedBeh behaviorSanitizer para sa hindi natukoy na pag-uugali sa code.

Sa oras na ito, Nag-aalok ang Google ng isang bagong detektor na "Mga Kundisyon ng Lahi" para sa Linux kernel na tinatawag na KCSAN (Kernel Kasabay na Sanitizer). Ang mga kritikal na kahinaan na ito ay hindi bago. Sa katunayan ang Nagaganap ang Mga Kundisyon ng Lahi kapag ang dalawa o higit pang mga thread sa parehong proseso ay na-access ang parehong lokasyon ng memorya nang sabay-sabay, kung saan hindi bababa sa isa sa mga pag-access ang magsulat, at kapag ang mga thread ay hindi gumagamit ng anumang mga eksklusibong kandado upang makontrol ang kanilang pag-access sa memorya na ito.

Kapag natugunan ang mga kundisyong ito, ang pagkakasunud-sunod ng pag-access ay hindi mapagpasya at ang pagkalkula ay maaaring magbigay ng iba't ibang mga resulta mula sa isang pagtakbo sa isa pa depende sa order na ito.

Ang Mga Kundisyon ng Lahi ay lalong nakikita bilang kasabay na mga error sa pag-access at mahirap na doblehin at mag-diagnose sa mga parallel na programa. Ang Linux kernel ay isang malakihang sistema ng software, kung saan ang thread-intensive parallelism at non-deterministic thread interleaving ay mas napapailalim sa mga kundisyon ng kompetisyon.

Ang ilang mga sitwasyong mapagkumpitensya ay maaaring maging kaaya-aya, ngunit marami sa kanila na nakilala sa ngayon ay itinuturing na mga pagkakamali.

Nagbibigay ang Linux kernel ng maraming mga mekanismo upang maiwasan at pamahalaan ang mga ganitong uri ng kundisyon dahil may mga tool tulad ng Thread Analyzer o KTSAN (Kernel Thread Sanitizer) upang makita ang mga kritikal na error sa pagpapatupad sa Linux Kernel.

Gayunpaman, ang Google, na nag-aambag din sa kernel ng Linux, kamakailan ay nagpanukala ng KCSAN, isang bagong detektor ng Mga Kundisyon ng Lahi para sa Kernel, katulad ng KTSAN.

Ayon sa Google, nakatuon ang KCSAN sa pagtuklas ng mga sitwasyong mapagkumpitensya sa kernel code. Ang detalyadong kritikal na detektor ng hit na ito ay isang kahalili sa Kernel Thread Sanitizer (KTSAN).

Ayon sa paliwanag ng Google, Ang KCSAN ay batay sa mga puntos sa pagsubaybay sa pag-sample, hindi katulad ng KTSAN detector, na isang kritikal na detector ng lahi bago ang kaganapan. Ang mga pangunahing priyoridad sa disenyo ng KCSAN ay ang kawalan ng maling mga positibo, kakayahang sumukat, at pagiging simple.

Gumagamit ang KCSAN ng mga tool sa pagtitipon upang ma-access ang memorya. Ang KCSAN ay katugma sa mga compiler ng GCC at Clang. Sa GCC, nangangailangan ito ng bersyon 7.3.0 o mas bago at sa Clang, nangangailangan ito ng bersyon 7.0.0 o mas bago.

Sa pahina ng GitHub ng proyektoSinulat ni Marco Elver ng Google na ang paggamit ng KCSAN sa mga pagsubok noong nakaraang buwan, natagpuan nila sa loob lamang ng dalawang araw na higit sa 300 mga natatanging sitwasyon sa pangunahing kumpetisyon. Nagbibigay ang KCSAN ng maraming mga pagpipilian sa pagsasaayos upang ipasadya ang pag-uugali nito.

"Gumagamit kami ng KCSAN sa pamamagitan ng Syzkaller ng ilang linggo, at marami kaming nahanap na mga bug. Sa una noong Setyembre 2019, nakilala namin ang higit sa 300 natatanging mga sitwasyon ng kumpetisyon sa loob lamang ng dalawang araw, "isinulat niya.

Sinabi ng Google na ang pangkalahatang diskarte ay batay sa DataCollider, isa pang pabago-bagong detektor ng mapagkumpitensyang mga sitwasyon sa mga kernel module. Ngunit hindi tulad ng DataCollider, ang KCSAN ay hindi gumagamit ng mga puntos sa pagmamanman ng hardware, sa halip ay umaasa ito sa mga tool sa pagtitipon.

Ang mga puntos ng pagsubaybay ay ipinatupad gamit ang mahusay na pag-encode na nag-iimbak ng uri, laki, at pag-access ng address sa isang mahabang file. Ang mga pakinabang ng paggamit ng may kakayahang umangkop na mga puntos sa pagsubaybay ay kakayahang dalhin at higit na kakayahang umangkop sa paglilimita sa pag-access na maaaring isaaktibo ng isang monitoring point.

Narito ang ilan sa mga pangunahing puntos na ginawa ng KCSAN para sa Google:

  • Mataas na pagganap: Ang KCSAN runtime ay minimal at hindi nangangailangan ng nakabahaging lock ng estado para sa bawat pag-access. Ang resulta ay mas mahusay na pagganap kaysa sa KTSAN.
  • Walang karagdagang memorya: ayon sa Google, walang kinakailangang cache. Ang kasalukuyang pagpapatupad ay gumagamit ng isang maliit na bilang ng mga haba upang ma-encode ang impormasyon ng punto ng pagsubaybay, na kung saan ay bale-wala.
  • Utos ng memorya: Hindi alam ng KCSAN ang mga patakaran sa pagkontrol ng modelo ng memorya ng kernel ng Linux (LKMM). Maaari itong magresulta sa mga kritikal na karera na nawala (maling mga negatibo) kumpara sa isang pre-event na karera ng detektor tulad ng KTSAN
  • Katumpakan: Ayon sa Google, ang KCSAN ay hindi wasto dahil gumagamit ito ng diskarte sa pag-sample;
  • Nangangailangan ng anotasyon: kailangan ng kaunting anotasyon sa labas ng runtime ng KCSAN. Sa kaso ng isang tagapakinig ng kaganapan na bago ang kundisyon, ang anumang pagkukulang ay humahantong sa maling mga positibo, na partikular na mahalaga sa konteksto ng kernel na may kasamang mga mekanismo ng pasadyang tiyempo.
  • Ang pagtuklas ng mga pabago-bagong sulatin mula sa mga aparato: Sa pamamagitan ng pagsuri sa mga halaga ng data sa panahon ng pag-setup ng panonood, ang mga dinamikong pagsulat mula sa mga aparato ay maaari ding makita.

Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: AB Internet Networks 2008 SL
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.