handleShutdownSignal calls std.log.info (src/main.zig:166-169). The log path takes the stderr mutex; if SIGINT/SIGTERM lands while another thread holds it (the flush worker logs regularly), the handler deadlocks and shutdown hangs until the supervisor sends SIGKILL. No data is at risk (the slot is preserved), but graceful shutdown becomes unreliable.
Ask: keep only the atomic store in the handler and log the "shutdown requested" message from the main loop when it observes the flag.
handleShutdownSignalcallsstd.log.info(src/main.zig:166-169). The log path takes the stderr mutex; if SIGINT/SIGTERM lands while another thread holds it (the flush worker logs regularly), the handler deadlocks and shutdown hangs until the supervisor sends SIGKILL. No data is at risk (the slot is preserved), but graceful shutdown becomes unreliable.Ask: keep only the atomic store in the handler and log the "shutdown requested" message from the main loop when it observes the flag.