From: Ian Lance Taylor Date: Wed, 1 Jun 2016 16:31:31 +0000 (-0700) Subject: os/signal: deflake TestReset/TestIgnore X-Git-Tag: go1.7beta1~10 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=bc4fdfdbfe6b971fcceaf4d75514a882917df10d;p=gostls13.git os/signal: deflake TestReset/TestIgnore Fixes #15661. Change-Id: Ic3a8296fc7107f491880900ef52563e52caca1a3 Reviewed-on: https://go-review.googlesource.com/23615 Run-TryBot: Ian Lance Taylor Reviewed-by: David Crawshaw TryBot-Result: Gobot Gobot --- diff --git a/src/os/signal/signal_test.go b/src/os/signal/signal_test.go index 56d786e501..406102c663 100644 --- a/src/os/signal/signal_test.go +++ b/src/os/signal/signal_test.go @@ -139,6 +139,19 @@ func testCancel(t *testing.T, ignore bool) { Reset(syscall.SIGWINCH, syscall.SIGHUP) } + // At this point we do not expect any further signals on c1. + // However, it is just barely possible that the initial SIGWINCH + // at the start of this function was delivered after we called + // Notify on c1. In that case the waitSig for SIGWINCH may have + // picked up that initial SIGWINCH, and the second SIGWINCH may + // then have been delivered on the channel. This sequence of events + // may have caused issue 15661. + // So, read any possible signal from the channel now. + select { + case <-c1: + default: + } + // Send this process a SIGWINCH. It should be ignored. syscall.Kill(syscall.Getpid(), syscall.SIGWINCH)