Commit 9340bd61 authored by Richard Miller's avatar Richard Miller Committed by David du Colombier
Browse files

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: default avatarIan Lance Taylor <iant@golang.org>
parent 97019105
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment