Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

misc/wasm, runtime: calling fmt.Println in different goroutines causes a crash #40081

Closed
albrow opened this issue Jul 6, 2020 · 6 comments
Closed
Labels
arch-wasm WebAssembly issues FrozenDueToAge NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Milestone

Comments

@albrow
Copy link
Contributor

albrow commented Jul 6, 2020

What version of Go are you using (go version)?

$ go version
go version go1.14.4 darwin/amd64

Does this issue reproduce with the latest release?

Yes. As of the time this issue was created, 1.14.4 is the latest non-beta release.

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/alex/Library/Caches/go-build"
GOENV="/Users/alex/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/alex/programming/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/Users/alex/.go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/Users/alex/.go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/mf/g899kr2d4y1_mn3qy7pf3b0h0000gn/T/go-build313810347=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?

See 0xProject/0x-mesh#849. We were seeing our code occasionally crash in the browser with different error messages. Sometimes we see the error message memory access out of bounds, and other times it is fatal: unreachable. We believe these two errors may be related.

We were able to create a minimal reproduction:

package main

import (
	"fmt"
	"time"
)

func main() {
	for i := 0; i < 100; i++ {
		go func(i int) {
			tick(i)
		}(i)
	}

	// Block until program is exited (e.g., with ctrl+c).
	select {}
}

func tick(i int) {
	for {
		fmt.Println(i)
		time.Sleep(100 * time.Millisecond)
	}
}

We are running the program via https://github.com/agnivade/wasmbrowsertest with the command GOOS=js GOARCH=wasm go run -exec="wasmbrowsertest" main.go. This is just a quick way for us to get the program running in a headless browser. If you prefer, you can follow the instructions from the WebAssembly Wiki for running this in a non-headless browser by serving up an index.html file. The crash occurs either way.

The program does not seem to crash in Node.js environments. It also doesn't crash if you run it without GOOS=js GOARCH=wasm. It only seems to crash in the browser.

What did you expect to see?

The program should run until stopped and repeatedly print out numbers between 0 and 99.

What did you see instead?

The program crashes with the following stack trace:

fatal error: unreachable

goroutine 106 [running]:
runtime.throw(0x34b03, 0xb)
	/Users/alex/.go/src/runtime/panic.go:1116 +0x7 fp=0x4977f0 sp=0x4977c8 pc=0x11cd0007
runtime.chanrecv(0x0, 0x497928, 0x1, 0x0)
	/Users/alex/.go/src/runtime/chan.go:435 +0x7b fp=0x497878 sp=0x4977f0 pc=0x1058007b
runtime.chanrecv1(0x0, 0x497928)
	/Users/alex/.go/src/runtime/chan.go:407 +0x2 fp=0x4978a0 sp=0x497878 pc=0x10570002
runtime: unexpected return pc for syscall.fsCall called from 0x0
stack: frame={sp:0x4978a0, fp:0x497950} stack=[0x497000,0x497800)
00000000004977a0:  00000000134e0000 <runtime.fatalthrow.func1+0>  000000000047e180
00000000004977b0:  0000000011cd0007 <runtime.throw+7>  00000000004977c8
00000000004977c0:  0000000011cd0007 <runtime.throw+7>  00000000004977d0
00000000004977d0:  00000000134d0000 <runtime.throw.func1+0>  0000000000034b03
00000000004977e0:  000000000000000b  000000001058007b <runtime.chanrecv+123>
00000000004977f0:  0000000000034b03  000000000000000b
syscall.fsCall(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
	/Users/alex/.go/src/syscall/fs_js.go:515 +0xd fp=0x497950 sp=0x4978a0 pc=0x1645000d
created by runtime.beforeIdle
	/Users/alex/.go/src/runtime/lock_js.go:184 +0x12

goroutine 1 [select (no cases)]:
main.main()
	/Users/alex/programming/gomod/wasm-print-crash/main.go:16 +0x6

goroutine 6 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x0)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x0)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 7 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x1)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x1)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 8 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x2)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x2)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 9 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x3)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x3)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 10 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x4)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x4)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 11 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x5)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x5)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 12 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x6)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x6)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 13 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x7)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x7)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 14 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x8)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x8)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 15 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x9)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x9)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 16 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0xa)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0xa)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 17 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0xb)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0xb)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 18 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0xc)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0xc)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 19 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0xd)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0xd)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 20 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0xe)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0xe)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 21 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0xf)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0xf)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 22 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x10)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x10)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 23 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x11)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x11)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 24 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x12)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x12)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 25 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x13)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x13)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 26 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x14)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x14)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 27 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x15)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x15)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 28 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x16)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x16)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 29 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x17)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x17)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 30 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x18)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x18)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 31 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x19)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x19)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 32 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x1a)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x1a)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 33 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x1b)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x1b)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 34 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x1c)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x1c)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 35 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x1d)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x1d)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 36 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x1e)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x1e)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 37 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x1f)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x1f)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 38 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x20)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x20)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 39 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x21)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x21)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 40 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x22)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x22)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 41 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x23)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x23)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 42 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x24)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x24)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 43 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x25)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x25)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 44 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x26)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x26)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 45 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x27)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x27)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 46 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x28)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x28)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 47 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x29)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x29)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 48 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x2a)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x2a)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 49 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x2b)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x2b)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 50 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x2c)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x2c)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 51 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x2d)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x2d)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 52 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x2e)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x2e)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 53 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x2f)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x2f)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 54 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x30)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x30)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 55 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x31)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x31)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 56 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x32)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x32)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 57 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x33)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x33)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 58 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x34)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x34)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 59 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x35)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x35)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 60 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x36)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x36)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 61 [semacquire]:
internal/poll.runtime_Semacquire(0x4340cc)
	/Users/alex/.go/src/runtime/sema.go:61 +0x2
internal/poll.(*fdMutex).rwlock(0x4340c0, 0x412700, 0x3)
	/Users/alex/.go/src/internal/poll/fd_mutex.go:154 +0x12
internal/poll.(*FD).writeLock(...)
	/Users/alex/.go/src/internal/poll/fd_mutex.go:239
internal/poll.(*FD).Write(0x4340c0, 0x4120f0, 0x3, 0x8, 0x0, 0x0, 0x0)
	/Users/alex/.go/src/internal/poll/fd_unix.go:255 +0x7
os.(*File).write(...)
	/Users/alex/.go/src/os/file_unix.go:280
os.(*File).Write(0x40c020, 0x4120f0, 0x3, 0x8, 0x12c6000e, 0x3ae08, 0x10770005)
	/Users/alex/.go/src/os/file.go:153 +0xf
fmt.Fprintln(0x4b5c0, 0x40c020, 0x4e2fb0, 0x1, 0x1, 0x3, 0x0, 0x0)
	/Users/alex/.go/src/fmt/print.go:265 +0x8
fmt.Println(...)
	/Users/alex/.go/src/fmt/print.go:274
main.tick(0x37)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:21 +0x6
main.main.func1(0x37)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 62 [waiting]:
syscall/js.Value.Call(0x7ff800010000000a, 0x4120d0, 0x33cf6, 0x5, 0x541ae0, 0x6, 0xa, 0xa, 0x160108)
	/Users/alex/.go/src/syscall/js/js.go:390 +0x3
syscall.fsCall(0x33cf6, 0x5, 0x4e3dd8, 0x5, 0x5, 0x3, 0x544208, 0x2, 0x4a01e0)
	/Users/alex/.go/src/syscall/fs_js.go:498 +0xc
syscall.Write(0x1, 0x412718, 0x3, 0x8, 0x3, 0x0, 0x0)
	/Users/alex/.go/src/syscall/fs_js.go:418 +0xd
internal/poll.(*FD).Write(0x4340c0, 0x412718, 0x3, 0x8, 0x0, 0x0, 0x0)
	/Users/alex/.go/src/internal/poll/fd_unix.go:268 +0x22
os.(*File).write(...)
	/Users/alex/.go/src/os/file_unix.go:280
os.(*File).Write(0x40c020, 0x412718, 0x3, 0x8, 0x12c6000e, 0x3ae08, 0x10770005)
	/Users/alex/.go/src/os/file.go:153 +0xf
fmt.Fprintln(0x4b5c0, 0x40c020, 0x4e3fb0, 0x1, 0x1, 0x3, 0x0, 0x0)
	/Users/alex/.go/src/fmt/print.go:265 +0x8
fmt.Println(...)
	/Users/alex/.go/src/fmt/print.go:274
main.tick(0x38)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:21 +0x6
main.main.func1(0x38)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 63 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x39)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x39)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 64 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x3a)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x3a)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 65 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x3b)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x3b)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 66 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x3c)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x3c)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 67 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x3d)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x3d)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 68 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x3e)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x3e)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 69 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x3f)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x3f)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 70 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x40)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x40)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 71 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x41)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x41)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 72 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x42)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x42)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 73 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x43)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x43)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 74 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x44)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x44)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 75 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x45)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x45)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 76 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x46)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x46)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 77 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x47)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x47)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 78 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x48)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x48)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 79 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x49)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x49)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 80 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x4a)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x4a)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 81 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x4b)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x4b)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 82 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x4c)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x4c)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 83 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x4d)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x4d)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 84 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x4e)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x4e)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 85 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x4f)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x4f)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 86 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x50)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x50)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 87 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x51)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x51)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 88 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x52)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x52)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 89 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x53)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x53)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 90 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x54)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x54)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 91 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x55)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x55)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 92 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x56)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x56)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 93 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x57)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x57)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 94 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x58)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x58)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 95 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x59)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x59)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 96 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x5a)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x5a)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 97 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x5b)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x5b)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 98 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x5c)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x5c)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 99 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x5d)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x5d)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 100 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x5e)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x5e)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 101 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x5f)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x5f)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 102 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x60)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x60)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 103 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x61)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x61)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 104 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x62)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x62)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3

goroutine 105 [sleep]:
time.Sleep(0x5f5e100)
	/Users/alex/.go/src/runtime/time.go:188 +0xe
main.tick(0x63)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:22 +0x8
main.main.func1(0x63)
	/Users/alex/programming/gomod/wasm-print-crash/main.go:11 +0x2
created by main.main
	/Users/alex/programming/gomod/wasm-print-crash/main.go:10 +0x3
http://localhost:51272/wasm_exec.js:541:10 Uncaught
Error: Go program has already exited
    at global.Go._resume (http://localhost:51272/wasm_exec.js:542:11)
    at http://localhost:51272/wasm_exec.js:308:14
[wasmbrowsertest]: 2020/07/06 15:26:12 main.go:240: possible uncaught exception (if the tests passed you can usually ignore this)
exit status 1
@dmitshur dmitshur added arch-wasm WebAssembly issues NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. labels Jul 7, 2020
@dmitshur dmitshur added this to the Backlog milestone Jul 7, 2020
@dmitshur
Copy link
Contributor

dmitshur commented Jul 7, 2020

Thanks for reporting.

/cc @neelance @cherrymui

@dmitshur dmitshur changed the title misc/wasm: Calling fmt.Println in different goroutines causes a crash misc/wasm, runtime: calling fmt.Println in different goroutines causes a crash Jul 7, 2020
@neelance
Copy link
Member

neelance commented Jul 7, 2020

This is very likely a duplicate of #38574.

@dmitshur
Copy link
Contributor

dmitshur commented Jul 7, 2020

The fix for #38574 was included in go1.15beta1. @albrow, can you please see if the issue is fixed in that version?

@albrow
Copy link
Contributor Author

albrow commented Jul 7, 2020

Thanks! The crash does not reproduce in go1.15beta1 so I think the issue has been fixed. Does it make sense to you that memory access out of bounds could be the same underlying issue or do you think that is separate?

@cherrymui
Copy link
Member

I think it could be the same underlying cause.

@neelance
Copy link
Member

Fixed by 0452f94.

@golang golang locked and limited conversation to collaborators Oct 15, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
arch-wasm WebAssembly issues FrozenDueToAge NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Projects
None yet
Development

No branches or pull requests

5 participants