Feeling overwhelmed by AI? Learn the Centaur Mindset. Read More →
A terminal showing go test and go vet passing while gohawk reports four warnings: lockorder, resourcelifetime, goroutineownership, and concurrentcapture

Green Build, Leaking Service: Static Analysis for Go Concurrency and Resource Bugs with gohawk

A Go service can pass every test, clear go vet without a word, and still be quietly broken. The kind of bug I mean does not throw an exception or fail an assertion. It leaks. A file handle that never gets closed, a goroutine that nobody waits for, a lock that an early return skips over. Each one is invisible on a laptop with a single request in flight, and each one turns into a 3 a.m. incident once real traffic arrives: file descriptors exhausted, memory climbing with abandoned goroutines, a handler wedged on a lock that was never released. ...

November 6, 2026 · 21 min · Scott Algatt