
Більшість користувачів Mac звикли, що їхні комп’ютери можуть тижнями перебувати в режимі сну, не потребуючи повного вимкнення чи перезавантаження. Проте виявилося, що операційна система має досить жорсткий, хоч і ненавмисний «термін придатності» одного сеансу роботи. Якщо ваш аптайм наближається до позначки у 50 днів, готуйтеся до того, що мережеві можливості системи перетворяться на гарбуз.
Читайте также: Маркетинговий фінт: Asus підняла ціни на ноутбуки Snapdragon X2 за кілька годин після релізу
Математична пастка 32 біт
Проблему виявили фахівці компанії Photon, які займаються моніторингом сервісів iMessage. Під час аналізу парку комп’ютерів вони помітили дивну поведінку: машини, що працювали без перерви тривалий час, раптово втрачали здатність приймати нові мережеві з’єднання. Детальне дослідження Photon показало, що корінь зла криється у внутрішньому лічильнику tcp_now.
Цей лічильник відповідає за відстеження часу з моменту завантаження системи для стека TCP. Проблема в тому, що він представлений як 32-бітне беззнакове ціле число. Максимальне значення такого числа становить 4 294 967 295. Оскільки tcp_now рахує час у мілісекундах, він неминуче переповнюється та обнуляється рівно через 49 днів, 17 годин, 2 хвилини та 47 секунд. У цей момент логіка обробки пакетів ламається, оскільки система очікує послідовного зростання значень, а отримує «нуль».
Симптоми мережевого паралічу
Найцікавіше в цій ситуації те, як саме виявляється збій. Комп’ютер не вимикається та не видає критичних помилок. Він продовжує відповідати на запити ping, оскільки протокол ICMP працює на нижчому рівні та не залежить від цього лічильника. Більше того, вже встановлені з’єднання можуть продовжувати стабільно працювати. Проте жоден новий запит через TCP/IP не буде оброблений.
Читайте также: Huawei Enjoy 90 Pro Max отримав перше оновлення: тепер він ще й трохи автомобіль
Для зовнішнього спостерігача система виглядає живою, але фактично вона ізольована від світу. Для звичайного власника MacBook, який закриває кришку ноутбука кілька разів на день, це навряд чи стане катастрофою. Проте для серверних рішень на базі macOS або систем моніторингу, де аптайм вимірюється місяцями, це критичний недолік. Наразі єдиним способом вирішення проблеми є превентивне перезавантаження до настання фатальної позначки.
Очікування на патч
На момент виявлення багу офіційних коментарів на ресурсах Apple не з’являлося, проте технічно виправити це нескладно. Перехід на 64-бітний лічильник або коректна обробка переповнення — стандартні практики в індустрії. Дивує лише те, що такий фундаментальний прорахунок у мережевому стеку залишався непоміченим стільки років. Можливо, інженери компанії просто не вірили, що хтось не перезавантажуватиме комп’ютер більше півтора місяця.
Якщо ваш робочий комп’ютер раптово «втомився» від мережі, можливо, варто придивитися до компактних рішень. Наприклад, Minisforum Elite M1 Lite пропонує непогану продуктивність для тих, кому потрібен процесор Meteor Lake за адекватні гроші.
Читайте также: Мегапіксельна артилерія: Китайські флагмани отримають подвійні 200 МП камери та LOFIC 3.0






