diff --git a/src/runtime/print1.go b/src/runtime/print1.go index 7bec5599b5..e717c98799 100644 --- a/src/runtime/print1.go +++ b/src/runtime/print1.go @@ -53,10 +53,12 @@ var debuglock mutex func printlock() { mp := getg().m + mp.locks++ // do not reschedule between printlock++ and lock(&debuglock). mp.printlock++ if mp.printlock == 1 { lock(&debuglock) } + mp.locks-- // now we know debuglock is held and holding up mp.locks for us. } func printunlock() {