• Joshua M. Clulow's avatar
    runtime: check for events when port_getn fails with ETIME · 971ec872
    Joshua M. Clulow authored
    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/+/204801Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
    Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
    971ec872
netpoll_solaris.go 10.6 KB