Natukoy ang isang bug sa kernel ng Linux na nagiging sanhi ng malfunction ng ilang program na gumagamit ng AVX

Sa Linux kernel mula noong inilabas ang 5.2, ay ipinahayag Isang error na nagiging sanhi ng paglabag sa mga nilalaman ng AVX register kapag bumabalik mula sa isang signal handler na hinahawakan kapag ang isang exception ay itinapon (page-fault). Ang problema ay nangyayari kapag nagpapatakbo ng mga multi-threaded programs ("-pthread") na may kasamang mga kalkulasyon sa AVX register, kung ang kernel ay binuo sa GCC 9 (kung binuo sa mga naunang release ng GCC, ang error ay hindi lilitaw, dahil GCC 9 caches ang address ng thread-local na variable sa rehistro, at ang mga naunang bersyon ng GCC ay naglo-load nito sa bawat oras).

Ang problema ay nagiging sanhi ng programa upang wakasan nang wala sa panahon na may error sa pagkasira ng memorya. Ang pinaka-kapansin-pansin at madalas na sinusunod na pagpapakita ng pagkakamali bakal nag-crash mga aplikasyon, nakasulat sa wikang Go. Dahil sa nabanggit na problema, maagang nagwawakas ang mga programa ng Go, kadalasang may mga error na "runtime error: invalid memory address o nil pointer dereference", "runtime: unexpected return pc" at "segmentation violation". Ang bug sa kernel ay nananatiling hindi naayos. Ang posibilidad ay isinasaalang-alang pagdaragdag ng mga pagbabago sa runtime ng wika ng Go upang piliing i-bypass ang mga error sa may problemang Linux kernel, sa halaga ng karagdagang overhead.

Pinagmulan: opennet.ru

Magdagdag ng komento