]> Cypherpunks repositories - gostls13.git/commitdiff
os: force a goroutine to be scheduled on WASM
authorCarlos Amedee <carlos@golang.org>
Fri, 3 Jan 2025 21:53:32 +0000 (16:53 -0500)
committerGopher Robot <gobot@golang.org>
Wed, 22 Jan 2025 17:23:24 +0000 (09:23 -0800)
The TestRootConcurrentClose test can fail when GOARCH=WASM because of
goroutine starvation. The spawned goroutine will sometimes run in a
loop and never have the main goroutine be scheduled. This causes the
test to fail due to a timeout. This change forces the goroutine to be
scheduled with each iteration of the loop when  GOARCH=WASM.

For #71134
Fixes #71117

Change-Id: I4fb68907c9ac3b33bd0572d5e5db2974a3379191
Reviewed-on: https://go-review.googlesource.com/c/go/+/640195
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Carlos Amedee <carlos@golang.org>

src/os/root_test.go

index b461ee220804f9bdc02c9046bc3a922d3758fbde..cbb985b2ceeb484484c04ea3d7f47baac553bc51 100644 (file)
@@ -1077,6 +1077,10 @@ func TestRootConcurrentClose(t *testing.T) {
                                first = false
                        }
                        f.Close()
+                       if runtime.GOARCH == "wasm" {
+                               // TODO(go.dev/issue/71134) can lead to goroutine starvation.
+                               runtime.Gosched()
+                       }
                }
        }()
        if err := <-ch; err != nil {