aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/repro
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2019-02-25 11:20:54 +0100
committerDmitry Vyukov <dvyukov@google.com>2019-02-25 11:21:48 +0100
commit4d7696cb3118457aa571c33e7cf50e0534c27c59 (patch)
tree816ef3be77345ac03163ea26d6e4f4f9bed6740e /pkg/repro
parenta70141bfe62a13aaab67f008a2d20862867f2e4f (diff)
pkg/repro: fix goroutine/instance leaks
On early return paths we fail to close instances and shutdown goroutines. Fix that.
Diffstat (limited to 'pkg/repro')
-rw-r--r--pkg/repro/repro.go11
1 files changed, 6 insertions, 5 deletions
diff --git a/pkg/repro/repro.go b/pkg/repro/repro.go
index 1fdffbc4d..ab91e545a 100644
--- a/pkg/repro/repro.go
+++ b/pkg/repro/repro.go
@@ -142,6 +142,12 @@ func Run(crashLog []byte, cfg *mgrconfig.Config, reporter report.Reporter, vmPoo
wg.Wait()
close(ctx.instances)
}()
+ defer func() {
+ close(ctx.bootRequests)
+ for inst := range ctx.instances {
+ inst.Close()
+ }
+ }()
res, err := ctx.repro(entries, crashStart)
if err != nil {
@@ -166,11 +172,6 @@ func Run(crashLog []byte, cfg *mgrconfig.Config, reporter report.Reporter, vmPoo
ctx.report.Corrupted, ctx.report.Report)
res.Report = ctx.report
}
-
- close(ctx.bootRequests)
- for inst := range ctx.instances {
- inst.Close()
- }
return res, ctx.stats, nil
}