Comment 16 for bug 1435109

Revision history for this message
Samuele Pedroni (pedronis) wrote :

so the bug with 1.2 is because the futex uses the motonic clock but the go timer heap was based on realtime futures times,

this was changed in go in 1.3, now the timers heap is using monotic future timestamps,

this means that sleep/timers created after a suspend will work as expected, sleep/timers that cross a suspend will wait based on monotic time (which doesn't increase in the suspend) and won't be timely,

discussion of go changes is here:

https://github.com/golang/go/issues/6007

in RTM/with 1.2 we need the workaround,

with 1.3 the ugliest big of the bug is gone, but we need to be careful if there are sleep/timers that cross a suspend that won't do what we expect