Недавно специалисты компании Photon выявили неожиданный баг в операционной системе macOS, который ограничивает её бесперебойную работу 49 днями и 17 часами. По истечении этого времени многие сетевые компоненты начинают выходить из строя из-за проблем с внутренним сетевым стеком TCP/IP.
Проблема проявилась во время мониторинга сервисов iMessage на компьютерах Mac. Инженеры заметили, что некоторые устройства перестали реагировать на сетевые запросы, несмотря на то, что сами машины продолжали отвечать на ping. Исследования показали, что неисправность происходит после того, как значение внутреннего счетчика “tcp_now” достигает предела 4 294 967 295 миллисекунд, что соответствует указанному времени.
Специалисты Photon выяснили, что внутренний счетчик tcp_now отвечает за отслеживание времени с момента загрузки системы и представлен как 32-битное целое число. Когда значение достигает максимума, оно обнуляется, что приводит к неправильной работе сетевого стека. В свою очередь, попытки очистки неактивных соединений приводят к переполнению, и система становится неспособной обрабатывать новые соединения.
Этот баг отразился на работе Mac в серверных условиях — устройства перестают подключать новые соединения и начинают игнорировать запросы на их создание. До появления решения единственным способом устранить проблему остается перезагрузка системы. Photon заявляет о работе над альтернативным решением и подчеркивает, что данная проблема обсуждается на форумах сообщества Apple.
Интересно, что такая проблема давно известна: она аналогична сбою Windows 98, произошедшему 49.7 дней после включения системы, и предстоящей проблеме “Год 2038”, которая затронет системы, использующие 32-битное UNIX-время. В то время как многие системы, включая Linux, уже устранили подобные уязвимости, Apple, похоже, пока не реагирует на эту ситуацию.
Согласно данным, собранным Photon, это не первый подобный случай, но подобная неэффективность в управлении временем вызывает серьезные опасения. Исправление бага не затянется, но внимательное изучение и сверка со стандартами могло бы предотвратить возникновение подобных проблем в будущем.
