]> Cypherpunks repositories - gostls13.git/commit
runtime: check for events when port_getn fails with ETIME
authorJoshua M. Clulow <josh@sysmgr.org>
Sat, 2 Nov 2019 05:26:59 +0000 (22:26 -0700)
committerIan Lance Taylor <iant@golang.org>
Sat, 2 Nov 2019 05:36:43 +0000 (05:36 +0000)
commit971ec8728e27a3a9e0b0b26413e2b994c828f86d
tree41978ed17c0fbe3bf7927e906cf09775eee92acc
parent1e4a358454987ef5104e45081c8e2ecdc9f32513
runtime: check for events when port_getn fails with ETIME

On illumos systems, and at least historically on Solaris systems, it is
possible for port_getn(3C) calls to return some number of events and
then fail with error ETIME.

Generally we expect this to happen if the caller passes an nget value
larger than 1 and calls with a timeout; if less than the requested
number of events accumulate the system will still return them after
timeout failure so the caller must check the updated nget value in the
ETIME case.  Note that although less likely this can still happen even
when requesting just 1 event, especially with a short timeout value or
on a busy system.

Fixes #35261

Change-Id: I0d83251b69a2fadc64c4e8e280aa596e2e1548ba
Reviewed-on: https://go-review.googlesource.com/c/go/+/204801
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/runtime/netpoll_solaris.go