У ядрі Linux виявлено помилку, що призводить до порушення роботи деяких програм, що використовують AVX

У ядрі Linux, починаючи з випуску 5.2, проявляється помилка, яка призводить до порушення вмісту регістра AVX при поверненні з оброблювача сигналу, що обробляється при генерації виключення (page-fault). Проблема виникає при запуску багатопотокових програм («-pthread»), в яких є обчислення з регістром AVX, у разі збирання ядра в GCC 9 (при збиранні в більш ранніх випусках GCC помилка не виявляється, оскільки GCC 9 кешує адресу змінної thread-local у регістрі, а попередні версії GCC завантажують його щоразу).

Проблема призводить до передчасного завершення програми з помилкою пошкодження пам'яті. Найбільш помітним і найпоширенішим проявом помилки стали крахи додатківнаписана мовою Go. Через зазначену проблему програми на мові Go передчасно завершуються, як правило, з помилками runtime error: invalid memory address or nil pointer dereference, runtime: unexpected return pc і segmentation violation. У ядрі помилка поки що залишається невиправленою. Розглядається можливість додавання в runtime мови Go змін для вибіркового обходу помилки проблемних ядрах Linux, ціною появи додаткових накладних витрат.

Джерело: opennet.ru

Додати коментар або відгук