49 días, 17 horas y 2 minutos: ese es el tiempo exacto que tu Mac puede funcionar sin cortes de red

49 días, 17 horas y 2 minutos: ese es el tiempo exacto que tu Mac puede funcionar sin cortes de red

Los que suelen dejar la tapa del portátil abierta durante semanas se llevarán una desagradable sorpresa.

image

Se detectó un fallo en macOS que pasa desapercibido durante mucho tiempo y luego casi instantáneamente rompe la conectividad de red. Si no se reinicia un Mac durante 49 días, 17 horas, 2 minutos y 47 segundos, el sistema puede dejar de abrir nuevas conexiones TCP. Desde el exterior el problema parece extraño: el ping funciona, las conexiones antiguas siguen activas, y todo lo que requiere una nueva conexión se va paralizando gradualmente.

Sobre el hallazgo, informó el equipo Photon, que utiliza una flota de ordenadores Mac para monitorizar el servicio iMessage. A finales de marzo de este año varias máquinas, tras el tiempo continuo de funcionamiento indicado arriba, dejaron de establecer nuevas conexiones TCP. Un reinicio devolvió la conectividad, pero al mismo tiempo quedó claro que el fallo no estaba relacionado con una aplicación concreta, sino con el propio sistema.

Los especialistas comprobaron la hipótesis en dos equipos que se acercaban al umbral crítico. Antes de alcanzar el límite, las sesiones TCP cerradas en estado TIME_WAIT desaparecían aproximadamente tras 30 segundos, como corresponde en macOS. Tras el desbordamiento del contador interno la situación cambió drásticamente: las entradas TIME_WAIT dejaron de limpiarse y solo se acumularon. En unas horas el número de tales conexiones llegaba a miles, los puertos efímeros libres se agotaban y las nuevas conexiones se quedaban en SYN_SENT.

Los autores del informe atribuyeron la causa a un desbordamiento de 32 bits en el kernel XNU. El contador TCP interno cuenta en milisegundos desde el inicio del sistema. Cuando el valor alcanza el límite, se reinicia a cero, pero la comprobación en el código impide que el temporizador continúe contando. Como resultado, los temporizadores TCP internos se detienen en la práctica y el mecanismo para limpiar las conexiones antiguas deja de funcionar.

El equipo Photon afirma que el problema se reproduce de forma consistente y concuerda con antiguas quejas de usuarios de Apple y con informes de proyectos de código abierto, donde después de varias semanas de funcionamiento macOS perdía la capacidad de crear nuevas conexiones TCP, aunque ICMP seguía funcionando.

Los usuarios habituales raramente se topan con este error, ya que las actualizaciones y los reinicios rutinarios suelen ocurrir antes del período peligroso. Los más afectados son, ante todo, los servidores con macOS, las granjas de compilación, los Mac mini en centros de datos y las estaciones de trabajo que funcionan de manera ininterrumpida durante semanas.

Por ahora no existe una manera fiable de esquivar el fallo sin reiniciar. Photon informó que busca una solución temporal puntual, pero hasta que aparezca un parche, a los propietarios de Mac que funcionan durante mucho tiempo solo les queda una opción — reiniciar las máquinas con antelación, sin esperar a que el temporizador interno alcance el umbral crítico.