From: Russ Cox Date: Tue, 18 Feb 2014 01:11:53 +0000 (-0500) Subject: runtime: clear f, arg to avoid leak in timerproc X-Git-Tag: go1.3beta1~675 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=be1c71ecb5b02220b282884317908b4da89ef37a;p=gostls13.git runtime: clear f, arg to avoid leak in timerproc I have seen this cause leaks where not all objects in a sync.Pool would be reclaimed during the sync package tests. I found it while debugging the '0 of 100 finalized' failure we are seeing on arm, but it seems not to be the root cause for that one. LGTM=dave, dvyukov R=golang-codereviews, dave, dvyukov CC=golang-codereviews https://golang.org/cl/64920044 --- diff --git a/src/pkg/runtime/time.goc b/src/pkg/runtime/time.goc index d52a3b3217..061d01cf2d 100644 --- a/src/pkg/runtime/time.goc +++ b/src/pkg/runtime/time.goc @@ -217,6 +217,14 @@ timerproc(void) if(raceenabled) runtime·raceacquire(t); f(now, arg); + + // clear f and arg to avoid leak while sleeping for next timer + f = nil; + USED(f); + arg.type = nil; + arg.data = nil; + USED(&arg); + runtime·lock(&timers); } if(delta < 0) {