From b9c88eaab915874bc004f579940b10fe48bba36b Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Tue, 9 Feb 2021 10:30:02 -0500 Subject: [PATCH] [dev.fuzz] testing/internal/testdeps: use signal.NotifyContext In RunFuzzWorker and CoordinateFuzzing, use signal.NotifyContext (new in 1.16) to cancel the context in response to SIGINT. This is shorter and more correct than what we were doing before. Change-Id: Id7e9a58e9dd992dffb86e4e0f2e3efd117d03c47 Reviewed-on: https://go-review.googlesource.com/c/go/+/290691 Trust: Jay Conrod Run-TryBot: Jay Conrod TryBot-Result: Go Bot Reviewed-by: Katie Hockman --- src/testing/internal/testdeps/deps.go | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/src/testing/internal/testdeps/deps.go b/src/testing/internal/testdeps/deps.go index 3d43170721..1333944d5e 100644 --- a/src/testing/internal/testdeps/deps.go +++ b/src/testing/internal/testdeps/deps.go @@ -140,14 +140,9 @@ func (TestDeps) CoordinateFuzzing(timeout time.Duration, parallel int, seed []fu if timeout > 0 { ctx, cancel = context.WithTimeout(ctx, timeout) } - interruptC := make(chan os.Signal, 1) - signal.Notify(interruptC, os.Interrupt) - go func() { - <-interruptC - cancel() - }() - defer func() { interruptC <- os.Interrupt }() - + ctx, stop := signal.NotifyContext(ctx, os.Interrupt) + defer stop() + defer cancel() err := fuzz.CoordinateFuzzing(ctx, parallel, seed, corpusDir, cacheDir) if err == ctx.Err() { return nil @@ -163,14 +158,9 @@ func (TestDeps) RunFuzzWorker(fn func([]byte) error) error { // If only the coordinator process is interrupted, it tells each worker // process to stop by closing its "fuzz_in" pipe. ctx, cancel := context.WithCancel(context.Background()) - interruptC := make(chan os.Signal, 1) - signal.Notify(interruptC, os.Interrupt) - go func() { - <-interruptC - cancel() - }() - defer func() { interruptC <- os.Interrupt }() - + ctx, stop := signal.NotifyContext(ctx, os.Interrupt) + defer stop() + defer cancel() err := fuzz.RunFuzzWorker(ctx, fn) if err == ctx.Err() { return nil -- 2.48.1