diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2019-02-25 11:20:54 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2019-02-25 11:21:48 +0100 |
| commit | 4d7696cb3118457aa571c33e7cf50e0534c27c59 (patch) | |
| tree | 816ef3be77345ac03163ea26d6e4f4f9bed6740e /pkg/repro | |
| parent | a70141bfe62a13aaab67f008a2d20862867f2e4f (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.go | 11 |
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 } |
