]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: fix notetsleepg deadline on js/wasm
authorRichard Musiol <mail@richard-musiol.de>
Tue, 11 Dec 2018 12:59:18 +0000 (13:59 +0100)
committerBrad Fitzpatrick <bradfitz@golang.org>
Wed, 2 Jan 2019 15:41:44 +0000 (15:41 +0000)
A notetsleepg may get stuck if its timeout callback gets invoked
exactly on its deadline due to low precision of nanotime. This change
fixes the comparison so it also resolves the note if the timestamps are
equal.

Updates #28975

Change-Id: I045d2f48b7f41cea0caec19b56876e9de01dcd6c
Reviewed-on: https://go-review.googlesource.com/c/153558
Run-TryBot: Richard Musiol <neelance@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/runtime/lock_js.go

index b04ccdb107e4e3118e3769f59bb3ef733e467175..f58c915b630a9c8ee0169c6129e4f1f831dbafdb 100644 (file)
@@ -127,7 +127,7 @@ func notetsleepg(n *note, ns int64) bool {
 func checkTimeouts() {
        now := nanotime()
        for n, nt := range notesWithTimeout {
-               if n.key == note_cleared && now > nt.deadline {
+               if n.key == note_cleared && now >= nt.deadline {
                        n.key = note_timeout
                        goready(nt.gp, 1)
                }