CoroTracer: Depura corutinas sin afectar rendimiento

Fuentes: New Tool CoroTracer Offers Zero-Overhead Debugging for Coroutine Schedulers

Un desarrollador ha creado 'coroTracer', una nueva herramienta de depuración de código abierto diseñada para rastrear y solucionar problemas complejos en programadores de corutinas M:N. El problema que motivó su creación fue un error crítico en un programador de corutinas donde el rendimiento se desplomaba a cero bajo carga, sin que las herramientas de detección de errores tradicionales (ASAN y TSAN) pudieran identificar la causa: 'wakeups perdidos', donde las corutinas quedaban bloqueadas indefinidamente esperando recursos cerrados. CoroTracer opera como un rastreador externo que no interfiere con el proceso de la aplicación objetivo, utilizando una arquitectura de dos planos: uno para escribir cambios de estado en memoria compartida (mmap) y otro, en Go, para analizar estos datos y generar informes. La herramienta incluye un panel interactivo en HTML para facilitar el diagnóstico y detecta automáticamente problemas como SIGBUS y 'wakeups perdidos'. Actualmente, se ofrece un SDK en C++20, pero el diseño permite la creación de probes para otros lenguajes como Rust o Zig. El autor ha demostrado su utilidad al resolver un problema específico en su propio programador de corutinas 'tiny_coro', donde 47 corutinas quedaron bloqueadas esperando una operación de lectura asíncrona fallida.