]> Cypherpunks repositories - gostls13.git/commit
runtime: avoid lock starvation in TestNetpollBreak on Plan 9
authorRichard Miller <miller.research@gmail.com>
Sat, 13 Jun 2020 18:04:15 +0000 (19:04 +0100)
committerDavid du Colombier <0intro@gmail.com>
Sun, 14 Jun 2020 17:50:11 +0000 (17:50 +0000)
commit9340bd610bfd386f8a71e480019b44806d53c3db
tree51c5f43e93fe676cdc196a040cf258ccd3a9d901
parent97019105884ced2c4658f9763528e7f6983f8773
runtime: avoid lock starvation in TestNetpollBreak on Plan 9

TestNetpollBreak was sometimes timing out on Plan 9, where
netpoll_stub.go implements only enough of the network poller
to support runtime timers, using a notetsleep / notewakeup
pair. The runtime.lock which serialises the use of the note
doesn't guarantee fairness, and in practice the netpoll call
used by the test can be starved by the netpoll call from the
scheduler which supports the overall 'go test' timeout.
Calling osyield after relinquishing the lock gives the two
callers a more even chance to take a turn, which prevents
the test from timing out.

Fixes #39437

Change-Id: Ifbe6aaf95336d162d9d0b6deba19b8debf17b071
Reviewed-on: https://go-review.googlesource.com/c/go/+/237698
Run-TryBot: David du Colombier <0intro@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/runtime/netpoll_stub.go