В Go 1.27 в runtime/pprof добавляется встроенный детектор утечек горутин, принятый из предложения Uber.
В отличие от uber-go/goleak, который работает только в тестах и дает ложные срабатывания на живом сервере, новый профиль goroutineleak через сборщик мусора доказывает, что горутина навсегда заблокирована когда канал/лок недостижим ни для одной работающей горутины, гарантируя отсутствие ложных срабатываний.
Профиль доступен через стандартные четыре способа: вызов pprof.Lookup("goroutineleak").WriteTo(...) из кода, в тестах с самописными verifyNone/verifyTestMain, по HTTP через /debug/pprof/goroutineleak и через go tool pprof.
При этом есть нюанс - детектор не ловит все возможные утечки. Некоторые горутины могут оставаться незамеченными, если их канал формально достижим через глобальные переменные или локальные переменные работающих горутин, хотя фактически он никогда не будет разблокирован.
29.06.2026
Похожее
12.08.2026
Typescript Defer
Автор экспериментировал с добавлением оператора defer из Go в компилятор TypeScr...
11.08.2026
Raft сломан
Ребята из Antithesis(я хз кто это) протестировали несколько популярных реализаци...
11.08.2026
Движение назад
Прикольная статья если вы хотите поковыряться в итераторах, джинериках и вот в э...
10.08.2026
Go 1.27
Антон Жиянов делал интерактивные туры по Go с версии 1.22 по 1.26, но решил оста...