1 июля в 00:00 UTC многие серверы начали демонстрировать загрузку CPU в 100%, а некоторые сайты и вовсе ушли в офлайн на непродолжительное время. Это было связано с добавлением дополнительной секунды координации, которая прибавилась к последнему дню июня из-за замедления вращения Земли.

В первое время никто не мог ничего понять, в чём причина выросшей загрузки CPU, высказывались разные версии. Довольно быстро в Сети появилась информация, какую команду нужно запустить, чтобы загрузка CPU опустилась до нормального состояния.

Разбор полётов продолжился в последующие дни. Оказалось, что один из хакеров ядра Linux по имени Джон Штульц (John Stultz) ещё в марте предложил патч для закрытия уязвимости в ядре Linux, связанной с некорректной обработкой секунды координации. Сейчас про этот патч вспомнили, и в списке рассылки LKML Джон Штульц подробно объяснил, в чём суть уязвимости.

Если вкратце, то проблема связана с подсистемой hrtimer. Она отвечает за вывод приложения из спящего режима, выдавая алерты в случае, если процесс в операционной системе продолжается слишком долго, и принудительно выводя приложение из спящего режима. После добавления дополнительной секунды подсистема hrtimer каким-то образом оказалась на секунду «впереди» ядра и начала непрерывно выдавать эти «алерты», выводя из спящего режима множество приложений, что в итоге и привело к загрузке CPU 100%.

Журналисты Wired связались с Линусом Торвальдсом для комментария. Линус сказал, что такие баги выявляются в малоиспользуемом коде, который не может быть протестирован в нормальных условиях.



Оставить мнение