From be1c71ecb5b02220b282884317908b4da89ef37a Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Mon, 17 Feb 2014 20:11:53 -0500 Subject: [PATCH] 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 --- src/pkg/runtime/time.goc | 8 ++++++++ 1 file changed, 8 insertions(+) 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) { -- 2.48.1