В macOS обнаружен баг с «таймером 49 дней»: MacBook теряют сеть без перезагрузки

В macOS обнаружен баг с «таймером 49 дней»: MacBook теряют сеть без перезагрузки

В ноутбуках Apple, включая MacBook Neo и MacBook Air, выявлена необычная, но потенциально критичная проблема: при непрерывной работе более 49,7 суток система начинает терять способность устанавливать новые сетевые соединения. Речь идет не о постепенном снижении производительности, а о точечном сбое, который наступает практически «по таймеру».

Как выяснилось, проблема проявляется спустя 49 дней, 17 часов, 2 минуты и 47 секунд непрерывной работы устройства. В этот момент в macOS фактически перестает корректно функционировать TCP/IP-стек, отвечающий за сетевые подключения. Причина кроется на уровне ядра XNU, где используется 32-битный счетчик tcp_now, отслеживающий время работы системы в миллисекундах. Достигнув своего максимального значения, он не сбрасывается, как ожидалось, а «зависает», нарушая внутреннюю логику обработки сетевых соединений.

На практике это приводит к постепенному накоплению «зависших» сессий. Система продолжает учитывать их как активные, что увеличивает нагрузку на процессор и одновременно исчерпывает доступный пул портов. Как только лимит, обычно около 16 тысяч соединений, оказывается достигнут, новые подключения становятся невозможны. При этом уже установленные соединения могут продолжать работать, а сама машина остается доступной, например, для ping-запросов — именно это и усложняло диагностику проблемы.

Ситуация особенно чувствительна для корпоративной среды, где устройства часто работают без перезагрузки неделями и даже месяцами. В таких условиях внезапная потеря сетевой функциональности может привести к сбоям в работе приложений и инфраструктуры. Пока самым простым решением остается перезагрузка системы, которая обнуляет счетчик и полностью восстанавливает работу сети — но только до следующего «цикла» в 49,7 дня.

Команда Photon, обнаружившая баг, уже работает над временным обходным решением. По их словам, речь может идти о патче уровня ядра, который позволит устранить зависание счетчика без перезагрузки. В долгосрочной перспективе проблему можно решить переходом на 64-битные значения, однако это потребует более глубокой переработки системы и тщательного тестирования.

Пока же пользователям, особенно в корпоративном сегменте, рекомендуется учитывать этот лимит и планировать регулярные перезагрузки устройств, чтобы избежать неожиданной потери сетевого подключения.