Виявлено критичний баг у TCP/IP: Mac втрачали мережу через переповнення лічильника

|
Виявлено критичний баг у TCP/IP: Mac втрачали мережу через переповнення лічильника

Mac TCP/IP bug

Про це розповідає KURAZH

Більшість користувачів комп’ютерів Mac звикли залишати свої пристрої в режимі сну протягом тривалого часу, не вимикаючи їх повністю і не перезавантажуючи. Проте нещодавно було виявлено, що операційна система macOS має певний обмежений термін безперервної роботи, після досягнення якого мережева функціональність може раптово втрачатися. Якщо аптайм комп’ютера наближається до 50 днів, існує ризик, що система перестане приймати нові мережеві підключення.

Як виникає проблема: переповнення 32-бітного лічильника

Фахівці компанії Photon, які займаються моніторингом сервісів iMessage, помітили неочікувану поведінку у комп’ютерів, які працювали без перерви тривалий час. Виявилося, що ці машини раптово втрачали здатність приймати нові з’єднання через TCP/IP. Поглиблений аналіз показав, що причина полягає у внутрішньому лічильнику tcp_now, який визначає час роботи TCP-стека з моменту запуску системи.

Лічильник tcp_now реалізовано як 32-бітне беззнакове ціле число. Його максимальне значення становить 4 294 967 295. Оскільки відлік ведеться у мілісекундах, переповнення відбувається через 49 днів, 17 годин, 2 хвилини та 47 секунд. Після цього значення лічильника обнуляється, що призводить до збою логіки обробки мережевих пакетів: система очікує зростання числа, а замість цього отримує «нуль».

Прояви збою та вплив на користувачів

Симптоми проблеми є особливими: комп’ютер не вимикається і не повідомляє про критичну помилку. Він і надалі відповідає на ping-запити, оскільки протокол ICMP працює незалежно від цього лічильника. Вже встановлені TCP-з’єднання продовжують працювати, але нові підключення до системи неможливі.

«Для звичайного власника MacBook, який закриває кришку ноутбука кілька разів на день, це навряд чи стане катастрофою. Проте для серверних рішень на базі macOS або систем моніторингу, де аптайм вимірюється місяцями, це критичний недолік. Наразі єдиним способом вирішення проблеми є превентивне перезавантаження до настання фатальної позначки».

Ззовні система виглядає функціональною, але насправді вона ізольована від нових мережевих контактів. Для звичайних користувачів Mac це малоймовірна проблема, але для серверних систем і тривалих робочих станцій вона може бути критичною.

Яких змін очікувати та що робити зараз

Офіційних коментарів від Apple станом на квітень 2026 року поки немає, однак технічно виправити баг нескладно: достатньо перейти на 64-бітний лічильник або правильно обробити переповнення. Проте залишається питання, чому подібний недогляд залишався непоміченим багато років — ймовірно, розробники не врахували сценарії з дуже довгим аптаймом.

Тим, хто не хоче стикатися з подібними проблемами, варто періодично перезавантажувати свої пристрої або розглянути альтернативні комп’ютери для тривалої роботи, наприклад, Minisforum Elite M1 Lite з процесором Meteor Lake.