Почему горутины зависают?

Middle
211 просмотров
AFK Offer AI

Обычно это deadlock или блокировка на канале. Если горутина ждёт чтения из канала, в который никто не пишет — она зависнет навсегда. То же с мьютексами — два мьютекса взятых в разном порядке дают deadlock. Для диагностики шли SIGQUIT — Go напечатает стектрейсы всех горутин. Ещё частая причина — забыл select с ctx.Done(), и горутина не отменяется при отмене контекста.

Следующий вопрос

Как находить goroutine leaks в тестах?