A macOS bug that causes TCP networking to stop working after 49.7 days

Comparisons to past uptime/overflow bugs

  • Many relate the 49.7-day limit to classic uint32 millisecond overflows (Windows 95, Arduino, Boeing 787’s 51‑day bug, Linux scheduler bugs).
  • General sentiment: this class of time/overflow bugs keeps reappearing despite being well known.

Who is affected / which macOS versions

  • Several users with very long uptimes on older macOS versions (Catalina and earlier) report no issue.
  • Multiple comments note the bug appears introduced in “macOS 26” (Tahoe) based on XNU source blame.
  • This conflicts with the blog’s implication that “every Mac” or much older releases are affected; some call that a clear overstatement.

Observed behavior, reproduction, and diagnostics

  • Reported symptom: new TCP connections eventually fail while existing ones may keep working; reboot fixes it.
  • Some users think they’ve hit this on always‑on Macs (especially minis or laptops that never sleep).
  • Others with >50 days uptime on recent macOS say networking is fine, suggesting it’s workload‑ and sleep‑dependent.
  • Suggested checks:
    • netstat -an | grep TIME_WAIT and watch for TIME_WAIT sockets that never expire.
    • Use sysctl kern.boottime to compute when 49.7 days elapse.

Debate over severity and real‑world impact

  • Some see it as a “ticking time bomb”; others dismiss that as dramatic since a reboot (or perhaps sleep) clears it.
  • Many note typical desktop behavior (short‑lived connections, browser retries) will hide the bug; long‑lived services, tunnels, DB connections are more vulnerable.
  • HN crowd admits they’re more likely than average users to hit long uptimes.

Critiques of the blog post (style and correctness)

  • Multiple comments say the article reads like AI‑generated: verbose, dramatic, slow to reach the point.
  • Several point out technical mistakes in the wraparound explanation; the real behavior around tcp_now, timer wrap, and TIME_WAIT seems subtler and partially misdescribed.
  • Some note Apple has been notified; others question the need for a long, AI‑assisted write‑up instead of a concise bug report.

Testing and design lessons

  • Discussion about designing time‑based code to be testable (injectable clocks, forced early wraparound).
  • Reminder: systems that rely on wraparound should trigger it soon after start in tests to catch bugs early.