Volver a la wiki

Robustez F1+F4: kill de instancias por PATH + auditoría de empaquetado del Agente

Contexto

Reinstalar el .exe del Local Agent de forma manual (descarga + doble click) sobre una instancia viva dejaba instancias duplicadas corriendo (footgun s183). Esto ocurría porque:

  1. psutil no iba empaquetado: la función find_running_agent_processes() hace import psutil pero la librería nunca entró en el onefile (ni requirements-agent.lock ni --hidden-import), por lo que devolvía [] siempre. El kill fallaba silenciosamente en el binario (aunque funcionaba en desarrollo).

  2. La vía de respaldo (wmic) era insegura: cuando psutil fallaba, se usaba wmic process ... get processid | taskkill /PID, pero mataba “todo excepto el pid actual”. En un onefile de PyInstaller el programa es en realidad DOS procesos (bootloader + hijo), así que podía matar a su propio padre o dejar duplicados. Además, wmic está retirado en Windows 11 24H2+.

  3. Filtro por nombre era débil: un instalador descargado a Downloads/CreaRackAgent.exe y otro instalado en %APPDATA%\CreaRackAgent\ tienen el mismo nombre. Matar por nombre (IMAGENAME) no distinguía.

Decisión

Matar instancias por PATH del ejecutable, no por nombre. Psutil viaja empaquetado en el .exe desde la versión 2.13.2 (Agent):

F1 · Kill seguro por PATH

F4 · Auditoría de empaquetado (gate de selftest)

El --selftest es el gate que protege cada build y cada swap de auto-update. Se amplía para que importe también los terceros lazy que aparecen en runtime:

Si en una futura compilación se olvida alguno de estos hidden-imports, el selftest lo detecta ANTES de llegar a la flota. Corrige además un drift en ATTRIBUTIONS: aiohttp estaba listado como 3.13.4 cuando el lock empaqueta 3.14.0.

Nota: win10toast NO se empaqueta a propósito — su excepción ImportError tiene fallback a MessageBox nativo.

Cierre de items

El item F2 ya fue cerrado en Agent 2.13.1 (traza persistente del auto-update en update_watchdog.log). El item F3 queda pendiente (firma de la versión ≠ decisión técnica pendiente).

Impacto

Cobertura de tests

6 tests nuevos en tests/agent/test_agent_installer_kill.py:

Véase también

Subir