From 4d7696cb3118457aa571c33e7cf50e0534c27c59 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Mon, 25 Feb 2019 11:20:54 +0100 Subject: pkg/repro: fix goroutine/instance leaks On early return paths we fail to close instances and shutdown goroutines. Fix that. --- pkg/repro/repro.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'pkg') 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 } -- cgit mrf-deployment