Depurando una condición de carrera: la trampa de RtlRunOnceExecuteOnce

Un compañero encontró un complicado problema de concurrencia durante una sesión semanal de depuración: una sección crítica falló en prevenir que dos hilos entraran en el mismo bloque de código, llevando a un fallo de registro doble de `TraceLoggingRegister`. La depuración profunda reveló la causa raíz: la función de inicialización `InitializeCriticalSectionOnce` para `RtlRunOnceExecuteOnce` devolvió incorrectamente `STATUS_SUCCESS` (0). Esto llevó a `RtlRunOnceExecuteOnce` a creer que la inicialización falló, causando que reinicializara la sección crítica en cada llamada, desencadenando la condición de carrera. La solución fue cambiar el valor de retorno a `TRUE`, o más elegantemente, reemplazar `CRITICAL_SECTION` con `SRWLOCK`. Este caso destaca cómo errores sutiles en el valor de retorno pueden llevar a consecuencias graves y subraya la importancia de elegir la primitiva de sincronización apropiada.