Volver a la wiki

s201: Auto-update del Agente falla aleatorio con datos de oro (primer rescate autónomo del watchdog)

Resumen

El primer rescate autónomo real del watchdog post-swap (validación 2.13.4, 05-07-2026) ejecutó el código diseñado para relanzar o revertir un auto-update fallido, pero mató un proceso vivo retenido por el análisis cloud de Windows Defender e hizo rollback de un binario funcional (versión 2.13.3 debería seguir corriendo, no revertir a 2.13.2).

Timeline

FechaEvento
03-07-2026Primer incidente: auto-update fallido, manual workaround
05-07-2026Release 2.13.4: validación manos-fuera del watchdog + primer rescate autónomo
05-07-2026s201 activado: el rescate funciona pero causa rollback incorrecto
05-07-2026Diagnóstico: carrera contra análisis cloud de Defender
05-07-2026Cierre con 2.13.5: prescan + watchdog paciente + reconcile version.txt

Síntomas

  1. Auto-update 2.13.3 → 2.13.4: arranque inicial del nuevo binario retenido (no killed, freezed)
  2. Watchdog sondea después de 30 segundos: "process alive but not responding"
  3. Decisión del watchdog: “el proceso está roto, vamos a matar y relanzar”
  4. Kill + relanzamiento: el binario sigue sin poder extraer el onefile (análisis aún en marcha)
  5. Retry final: watchdog decide "el nuevo .exe no va, revirtiendo a la versión anterior"
  6. Resultado: Agente corriendo 2.13.3 en lugar de 2.13.4 (rollback correcto) O 2.13.2 (rollback excesivo — observado el 05-07)

Causa raíz

Carrera contra Windows Defender:

Evidencia en traza: "process alive but not responding" (no es un crash, es retencion).

El watchdog de 2.13.4 usaba sondeo impaciente (checks únicos a 30+20 s), insuficiente para detectar retencion temporal.

Impacto

Resolución (v1.45.11 · Agent 2.13.5)

Tres cambios:

  1. Prescan explícito de Defender antes del swap (_defender_prescan)

    • Completa el análisis cloud de forma síncrona
    • Replica el “tiempo muerto” de la instalación manual
  2. Watchdog paciente (WaitHealthy con poll cada 10 s)

    • Ventanas de 150/120/120 s en lugar de checks únicos a 30+20 s
    • El sondeo respeta el tiempo del análisis cloud
  3. Reconcile version.txt post-rollback

    • Detecta y corrige drift tras un rollback que restaura un binario viejo sin tocar version.txt

Testing

3 tests nuevos en tests/agent/test_agent_updater_trace.py:

  1. Watchdog contiene WaitHealthy (regresión contra impaciente de 2.13.4)
  2. Prescan graceful sin MpCmdRun
  3. Reconcile de version.txt tras rollback

Véase también

Subir