Correctness, Errors, and Debugging
Error versus exception handling, debugging real races and deadlocks, sanitizers, and observing concurrency in production.
Error Handling vs Exception Handling
Error codes versus exceptions, std::expected as a middle ground, propagating errors across thread, future, and coroutine boundaries, and exception safety under concurrency.
Debugging Real Races and Deadlocks
Reproducing an actual data race and an actual deadlock, driving gdb against a multithreaded program, and reading a ThreadSanitizer report line by line.
Sanitizers and Dynamic Analysis
ThreadSanitizer and AddressSanitizer, Valgrind's Helgrind and DRD, what each tool catches and misses, and wiring them into CI.
Observing Concurrency
Instrumenting a concurrent C++ service with OpenTelemetry, propagating trace context across thread-pool, future, and coroutine boundaries, and the saturation and contention metrics that reveal a struggling pool before it becomes an incident.