中級 › sync: negative WaitGroup counter パニックの原因と直し方 › パターン5
sync: negative WaitGroup counter パニックの原因と直し方
sync.WaitGroupのDone()はAdd()で加算した回数より多く呼ぶとカウンタが負になり、実行時にパニックします。
1 package main 2 3 import "sync" 4 5 func main() { 6 var wg sync.WaitGroup 7 wg.Add(2) 8 wg.Done() 9 wg.Done() 10 _________ ^ 11 }
panic: sync: negative WaitGroup counterAdd(2)に対しDoneを3回呼んでいる
空欄を埋めて実行を通す
defer wg.Done()を複数箇所に書いてしまうコピー&ペーストのミスも、この種のパニックの典型的な原因です。
次の問題