В ядре Linux выявлены ошибки, приводящие к зависанию процессов и повреждению разделов EXT4

В ядре Linux выявлены две неприятные ошибки: Начиная с выпуска 3.14 и заканчивая 3.18, т.е. с января по октябрь 2014 года, в ядре Linux присутствовала неприятная ошибка в реализации вызова futex_wait, которая могла приводить к непредсказуемому зависанию процессов на серверах с процессорами на базе микроархитектуры Intel Haswell, в том числе используемых в облаках Amazon.Данная ошибка является причиной замешательства многих программистов, которые месяцами пытались найти ошибку в своих приложениях, зависающих при непонятных обстоятельствах. Причиной зависание была взаимная блокировка в ядре из-за которой фьютекс оставался навсегда в состоянии блокировки, несмотря на его фактическое освобождение.

Проблема усугубляется тем, что связанная с проблемой функциональность была портирована в ядро, поставляемое в дистрибутиве Red Hat Enterprise Linux и присутствует как минимум в выпусках RHEL/CentOS 6.6 и 7.1. В свежем обновлении RHEL 6.6.z проблема устранена, но остаётся неисправленной в RHEL 7.1. В пакетах с ядром для Ubuntu 14.04 и Debian 8 проблема была устранена ещё в прошлом году. Ubuntu 12.04 и Debian 7 не были подвержены проблеме. В SLES 12 проблема также была бэкпортирована, но уже устранена в ядре 3.12.32–33.1.

Вторая проблема проявляется в ядре 4.0.2 и устранена в выпуске 4.0.3. При определённом стечении обстоятельств ошибка может привести к значительному повреждению целостности файловой системы Ext4 и потере части данных. У большинства пользователей, сообщивших о проявлении проблемы, использовался RAID0 на базе mdadm. Сообщается также о проявлении похожих проблем при использовании dm-crypt.

©  OpenNet