golang / go

The Go programming language
https://go.dev
BSD 3-Clause "New" or "Revised" License
122.88k stars 17.52k forks source link

runtime: `found bad pointer in Go heap` on `wasm` ports testing `x/tools/go/ssa.TestTypeparamTest/chans.go` #64726

Closed bcmills closed 3 days ago

bcmills commented 9 months ago
#!watchflakes
post <- goarch == "wasm" && pkg == "golang.org/x/tools/go/ssa" && `fatal error: found bad pointer in Go heap`

Go version

N/A

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

N/A

What did you do?

Check x/tools LUCI builder status: https://ci.chromium.org/p/golang/g/x-tools-gotip/console

What did you expect to see?

All tests passing.

What did you see instead?

A pattern of failures on the js/wasm builders involving a pointer … to unused region of span when running a particular x/tools test that doesn't fail anywhere else.

``` === RUN TestTypeparamTest/chans.go builder_test.go:855: Input: /home/swarming/.swarming/w/ir/x/w/goroot/test/typeparam/chans.go runtime: pointer 0x10ae0000 to unused region of span span.base()=0x2340000 span.limit=0x2342000 span.state=1 fatal error: found bad pointer in Go heap (incorrect use of unsafe or cgo?) runtime stack: runtime.throw({0xc0861, 0x3e}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/panic.go:1023 +0x3 fp=0x5150a8 sp=0x515080 pc=0x12750003 runtime.badPointer(0x26d0170, 0x10ae0000, 0x0, 0x0) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mbitmap.go:286 +0xe fp=0x5150e8 sp=0x5150a8 pc=0x1100000e runtime.findObject(0x10ae0000, 0x0, 0x0) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mbitmap.go:329 +0x1d fp=0x515118 sp=0x5150e8 pc=0x1101001d runtime.wbBufFlush1(0x183a008) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mwbbuf.go:240 +0x10 fp=0x515188 sp=0x515118 pc=0x124a0010 runtime.wbBufFlush.func1() /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mwbbuf.go:181 +0x6 fp=0x515198 sp=0x515188 pc=0x14550006 runtime.systemstack(0x5151a8) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:172 +0x3 fp=0x5151a0 sp=0x515198 pc=0x14fb0003 runtime.mstart() /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:29 fp=0x5151a8 sp=0x5151a0 pc=0x14f70000 goroutine 644 gp=0x1af4000 m=0 mp=0x4bc980 [running]: runtime.systemstack_switch() /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:183 fp=0x1833770 sp=0x1833768 pc=0x14fc0000 runtime.wbBufFlush() /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mwbbuf.go:180 +0xf fp=0x1833780 sp=0x1833770 pc=0x1249000f gcWriteBarrier() /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:482 +0x1 fp=0x1833788 sp=0x1833780 pc=0x14f50001 runtime: g 644: unexpected return pc for gcWriteBarrier called from 0xe8301c0 stack: frame={sp:0x1833780, fp:0x1833788} stack=[0x1830000,0x1834000) 0x0000000001833680: 0x0000000000000080 0x00000000004bc980 0x0000000001833690: 0x000000000187b480 0x0000000000000000 0x00000000018336a0: 0x0000000001af4000 0x0000000000000010 0x00000000018336b0: 0x0000000013660092 0x000000000187b480 0x00000000018336c0: 0x0000000000000000 0x0000000000000000 0x00000000018336d0: 0x000000000187b480 0x0000000000000080 0x00000000018336e0: 0x0000000019430002 0x0000000001833708 0x00000000018336f0: 0x0000000000000000 0x0000000000000000 0x0000000001833700: 0x000000001925000c 0x000000000187b480 0x0000000001833710: 0x000000000e8301c0 0x0000000000000024 0x0000000001833720: 0x0000000000000080 0x000000000003ab40 0x0000000001833730: 0x000000000187b480 0x0000000000000080 0x0000000001833740: 0x0000000000000080 0x000000000b1cc450 0x0000000001833750: 0x0000000000000080 0x0000000000000080 0x0000000001833760: 0x0000000000000080 0x000000001249000f 0x0000000001833770: 0x00000000000cad80 0x0000000014f50001 0x0000000001833780: <0x000000000e8301c0 >0x0000000000000024 0x0000000001833790: 0x0000000000000040 0x0000000000000052 0x00000000018337a0: 0x000000000187b480 0x0000000000000024 0x00000000018337b0: 0x0000000000000080 0x0000000000000024 0x00000000018337c0: 0x0000000001ad8c30 0x000000000187b480 0x00000000018337d0: 0x000000001922000b 0x000000000b1cc420 0x00000000018337e0: 0x0000000000000052 0x0000000001ad8c30 0x00000000018337f0: 0x000000000203f880 0x0000000018740008 0x0000000001833800: 0x000000000b1cc420 0x000000000203f880 0x0000000001833810: 0x0000000000000052 0x0000000000000080 0x0000000001833820: 0x0000000000000001 0x0000000000000001 0x0000000001833830: 0x00000000000820e0 0x000000000b1cc450 0x0000000001833840: 0x0000000001833958 0x0000000001ad8c30 0x0000000001833850: 0x000000000b1cc450 0x0000000024250022 0x0000000001833860: 0x000000000012ed28 0x000000000b1cc420 0x0000000001833870: 0x00000000000ad389 0x000000000000000f 0x0000000001833880: 0x0000000001833a10 created by golang.org/x/tools/go/ssa.(*Program).Build in goroutine 626 /home/swarming/.swarming/w/ir/x/w/targetrepo177684174/go/ssa/builder.go:2621 +0x1b goroutine 1 gp=0x18001c0 m=nil [chan receive]: runtime.gopark(0xcaa28, 0xf8b66e8, 0xe, 0x7, 0x2) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:402 +0x25 fp=0x18a79a8 sp=0x18a7980 pc=0x129d0025 runtime.chanrecv(0xf8b6690, 0x18a7a97, 0x1) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/chan.go:583 +0x66 fp=0x18a7a28 sp=0x18a79a8 pc=0x107c0066 runtime.chanrecv1(0xf8b6690, 0x18a7a97) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/chan.go:442 +0x2 fp=0x18a7a50 sp=0x18a7a28 pc=0x107b0002 testing.(*T).Run(0x188c4e0, {0xae140, 0x11}, 0xca848) /home/swarming/.swarming/w/ir/x/w/goroot/src/testing/testing.go:1750 +0x44 fp=0x18a7b20 sp=0x18a7a50 pc=0x1a0f0044 testing.runTests.func1(0x188c4e0) /home/swarming/.swarming/w/ir/x/w/goroot/src/testing/testing.go:2161 +0x3 fp=0x18a7b60 sp=0x18a7b20 pc=0x1a1b0003 testing.tRunner(0x188c4e0, 0x18a7c80) /home/swarming/.swarming/w/ir/x/w/goroot/src/testing/testing.go:1689 +0xd fp=0x18a7bc8 sp=0x18a7b60 pc=0x1a0a000d testing.runTests(0x180a180, {0x4afe60, 0x22, 0x22}, {0xc156aa802e9c5f80, 0x8bb30d4801, 0x4bb9e0}) /home/swarming/.swarming/w/ir/x/w/goroot/src/testing/testing.go:2159 +0x49 fp=0x18a7ca8 sp=0x18a7bc8 pc=0x1a1a0049 testing.(*M).Run(0x1866f00) /home/swarming/.swarming/w/ir/x/w/goroot/src/testing/testing.go:2027 +0x6e fp=0x18a7ee8 sp=0x18a7ca8 pc=0x1a13006e main.main() _testmain.go:115 +0x9 fp=0x18a7f68 sp=0x18a7ee8 pc=0x295a0009 runtime.main() /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:271 +0x41 fp=0x18a7fe0 sp=0x18a7f68 pc=0x12970041 runtime.goexit({}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:434 +0x1 fp=0x18a7fe8 sp=0x18a7fe0 pc=0x15260001 goroutine 2 gp=0x1800380 m=nil [force gc (idle)]: runtime.gopark(0xcacf0, 0x4bb2e0, 0x11, 0xa, 0x1) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:402 +0x25 fp=0x184cfb0 sp=0x184cf88 pc=0x129d0025 runtime.goparkunlock(...) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:408 runtime.forcegchelper() /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:326 +0x1b fp=0x184cfe0 sp=0x184cfb0 pc=0x129a001b runtime.goexit({}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:434 +0x1 fp=0x184cfe8 sp=0x184cfe0 pc=0x15260001 created by runtime.init.5 in goroutine 1 /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:314 +0x2 goroutine 3 gp=0x1800540 m=nil [GC sweep wait]: runtime.gopark(0xcacf0, 0x4bb620, 0xc, 0x9, 0x1) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:402 +0x25 fp=0x184d790 sp=0x184d768 pc=0x129d0025 runtime.goparkunlock(...) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:408 runtime.bgsweep(0x1852000) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgcsweep.go:317 +0x1d fp=0x184d7d0 sp=0x184d790 pc=0x11b2001d runtime.gcenable.gowrap1() /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgc.go:203 +0x2 fp=0x184d7e0 sp=0x184d7d0 pc=0x11370002 runtime.goexit({}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:434 +0x1 fp=0x184d7e8 sp=0x184d7e0 pc=0x15260001 created by runtime.gcenable in goroutine 1 /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgc.go:203 +0x6 goroutine 4 gp=0x1800700 m=nil [runnable]: runtime.gopark(0xcacf0, 0x4bbb00, 0xd, 0xa, 0x2) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:402 +0x25 fp=0x184df80 sp=0x184df58 pc=0x129d0025 runtime.goparkunlock(...) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:408 runtime.(*scavengerState).park(0x4bbb00) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgcscavenge.go:425 +0xc fp=0x184dfa8 sp=0x184df80 pc=0x1190000c runtime.bgscavenge(0x1852000) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgcscavenge.go:658 +0x8 fp=0x184dfd0 sp=0x184dfa8 pc=0x11950008 runtime.gcenable.gowrap2() /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgc.go:204 +0x2 fp=0x184dfe0 sp=0x184dfd0 pc=0x11360002 runtime.goexit({}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:434 +0x1 fp=0x184dfe8 sp=0x184dfe0 pc=0x15260001 created by runtime.gcenable in goroutine 1 /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgc.go:204 +0xa goroutine 5 gp=0x18008c0 m=nil [finalizer wait]: runtime.gopark(0xcaa58, 0x50cb20, 0x10, 0xa, 0x1) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:402 +0x25 fp=0x184c710 sp=0x184c6e8 pc=0x129d0025 runtime.runfinq() /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mfinal.go:194 +0x1c fp=0x184c7e0 sp=0x184c710 pc=0x112d001c runtime.goexit({}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:434 +0x1 fp=0x184c7e8 sp=0x184c7e0 pc=0x15260001 created by runtime.createfing in goroutine 1 /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mfinal.go:164 +0xc goroutine 6 gp=0x1800a80 m=nil [waiting]: runtime.gopark(0x0, 0x0, 0x0, 0x0, 0x1) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:402 +0x25 fp=0x5875760 sp=0x5875738 pc=0x129d0025 runtime.handleEvent() /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/lock_js.go:296 +0x25 fp=0x58757e0 sp=0x5875760 pc=0x10c10025 runtime.goexit({}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:434 +0x1 fp=0x58757e8 sp=0x58757e0 pc=0x15260001 created by runtime.beforeIdle /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/lock_js.go:238 +0x1e goroutine 571 gp=0x1800c40 m=nil [chan receive]: runtime.gopark(0xcaa28, 0xf8b7e88, 0xe, 0x7, 0x2) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:402 +0x25 fp=0x1b9cce0 sp=0x1b9ccb8 pc=0x129d0025 runtime.chanrecv(0xf8b7e30, 0x1b9cdcf, 0x1) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/chan.go:583 +0x66 fp=0x1b9cd60 sp=0x1b9cce0 pc=0x107c0066 runtime.chanrecv1(0xf8b7e30, 0x1b9cdcf) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/chan.go:442 +0x2 fp=0x1b9cd88 sp=0x1b9cd60 pc=0x107b0002 testing.(*T).Run(0x1ab2340, {0x19cab08, 0x8}, 0xab28df8) /home/swarming/.swarming/w/ir/x/w/goroot/src/testing/testing.go:1750 +0x44 fp=0x1b9ce58 sp=0x1b9cd88 pc=0x1a0f0044 golang.org/x/tools/go/ssa_test.TestTypeparamTest(0x1ab2340) /home/swarming/.swarming/w/ir/x/w/targetrepo177684174/go/ssa/builder_test.go:845 +0x30 fp=0x1b9cf60 sp=0x1b9ce58 pc=0x29340030 testing.tRunner(0x1ab2340, 0xca848) /home/swarming/.swarming/w/ir/x/w/goroot/src/testing/testing.go:1689 +0xd fp=0x1b9cfc8 sp=0x1b9cf60 pc=0x1a0a000d testing.(*T).Run.gowrap1() /home/swarming/.swarming/w/ir/x/w/goroot/src/testing/testing.go:1742 +0x2 fp=0x1b9cfe0 sp=0x1b9cfc8 pc=0x1a100002 runtime.goexit({}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:434 +0x1 fp=0x1b9cfe8 sp=0x1b9cfe0 pc=0x15260001 created by testing.(*T).Run in goroutine 1 /home/swarming/.swarming/w/ir/x/w/goroot/src/testing/testing.go:1742 +0x43 goroutine 44 gp=0x1800fc0 m=nil [GC worker (idle)]: runtime.gopark(0xcaa80, 0x1823f40, 0x1a, 0xa, 0x0) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:402 +0x25 fp=0x184ef48 sp=0x184ef20 pc=0x129d0025 runtime.gcBgMarkWorker() /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgc.go:1310 +0x1f fp=0x184efe0 sp=0x184ef48 pc=0x114a001f runtime.goexit({}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:434 +0x1 fp=0x184efe8 sp=0x184efe0 pc=0x15260001 created by runtime.gcBgMarkStartWorkers in goroutine 43 /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgc.go:1234 +0x3 goroutine 645 gp=0x1b1d340 m=nil [runnable]: golang.org/x/tools/go/ssa.(*Program).Build.gowrap1() /home/swarming/.swarming/w/ir/x/w/targetrepo177684174/go/ssa/builder.go:2621 fp=0x58747e0 sp=0x58747d8 pc=0x23dc0000 runtime.goexit({}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:434 +0x1 fp=0x58747e8 sp=0x58747e0 pc=0x15260001 created by golang.org/x/tools/go/ssa.(*Program).Build in goroutine 626 /home/swarming/.swarming/w/ir/x/w/targetrepo177684174/go/ssa/builder.go:2621 +0x1b goroutine 626 gp=0x1af2fc0 m=nil [semacquire]: runtime.gopark(0xcacf0, 0x4c5260, 0x12, 0x5, 0x4) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:402 +0x25 fp=0xbb3fca0 sp=0xbb3fc78 pc=0x129d0025 runtime.goparkunlock(...) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:408 runtime.semacquire1(0xb101438, 0x0, 0x1, 0x0, 0x12) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/sema.go:160 +0x3a fp=0xbb3fce8 sp=0xbb3fca0 pc=0x135c003a sync.runtime_Semacquire(0xb101438) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/sema.go:62 +0x2 fp=0xbb3fd18 sp=0xbb3fce8 pc=0x14de0002 sync.(*WaitGroup).Wait(0xb101430) /home/swarming/.swarming/w/ir/x/w/goroot/src/sync/waitgroup.go:116 +0xf fp=0xbb3fd40 sp=0xbb3fd18 pc=0x15d6000f golang.org/x/tools/go/ssa.(*Program).Build(0xb15e0d0) /home/swarming/.swarming/w/ir/x/w/targetrepo177684174/go/ssa/builder.go:2627 +0x1d fp=0xbb3fdf0 sp=0xbb3fd40 pc=0x23db001d golang.org/x/tools/go/ssa_test.TestTypeparamTest.func1(0xab4d380) /home/swarming/.swarming/w/ir/x/w/targetrepo177684174/go/ssa/builder_test.go:882 +0x4d fp=0xbb3ff60 sp=0xbb3fdf0 pc=0x2935004d testing.tRunner(0xab4d380, 0xab28df8) /home/swarming/.swarming/w/ir/x/w/goroot/src/testing/testing.go:1689 +0xd fp=0xbb3ffc8 sp=0xbb3ff60 pc=0x1a0a000d testing.(*T).Run.gowrap1() /home/swarming/.swarming/w/ir/x/w/goroot/src/testing/testing.go:1742 +0x2 fp=0xbb3ffe0 sp=0xbb3ffc8 pc=0x1a100002 runtime.goexit({}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:434 +0x1 fp=0xbb3ffe8 sp=0xbb3ffe0 pc=0x15260001 created by testing.(*T).Run in goroutine 571 /home/swarming/.swarming/w/ir/x/w/goroot/src/testing/testing.go:1742 +0x43 ```

Examples:

(attn @golang/wasm)

gopherbot commented 2 weeks ago

Found new dashboard test flakes for:

#!watchflakes
post <- goarch == "wasm" && pkg == "golang.org/x/tools/go/ssa" && `fatal error: found bad pointer in Go heap`
2024-08-27 21:22 x_tools-go1.23-wasip1-wasm_wasmtime tools@adb7301a release-branch.go1.23@80028457 x/tools/go/ssa.TestTypeparamTest/chans.go [ABORT] (log) === RUN TestTypeparamTest/chans.go builder_test.go:805: Input: /home/swarming/.swarming/w/ir/x/w/goroot/test/typeparam/chans.go runtime: pointer 0x10810000 to unallocated span span.base()=0x10800000 span.limit=0x10822000 span.state=0 fatal error: found bad pointer in Go heap (incorrect use of unsafe or cgo?) runtime stack: runtime.throw({0xc7e01, 0x3e}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/panic.go:1067 +0x3 fp=0x50bac8 sp=0x50baa0 pc=0x14cc0003 runtime.badPointer(0x1c7c178, 0x10810000, 0x0, 0x0) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mbitmap.go:1247 +0xe fp=0x50bb08 sp=0x50bac8 pc=0x10c3000e ... runtime.gopark(0xd2878, 0x1ac0e60, 0x1a, 0xa, 0x0) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:424 +0x22 fp=0x184a738 sp=0x184a710 pc=0x14ce0022 runtime.gcBgMarkWorker(0x1aea9a0) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgc.go:1363 +0x1f fp=0x184a7d0 sp=0x184a738 pc=0x1100001f runtime.gcBgMarkStartWorkers.gowrap1() /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgc.go:1279 +0x2 fp=0x184a7e0 sp=0x184a7d0 pc=0x10ff0002 runtime.goexit({}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:434 +0x1 fp=0x184a7e8 sp=0x184a7e0 pc=0x15400001 created by runtime.gcBgMarkStartWorkers in goroutine 41 /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgc.go:1279 +0x28

watchflakes

gopherbot commented 1 week ago

Found new dashboard test flakes for:

#!watchflakes
post <- goarch == "wasm" && pkg == "golang.org/x/tools/go/ssa" && `fatal error: found bad pointer in Go heap`
2024-09-03 21:06 x_tools-go1.23-wasip1-wasm_wasmtime tools@2db563b1 release-branch.go1.23@3d1f1f27 x/tools/go/ssa.TestTypeparamTest/chans.go [ABORT] (log) === RUN TestTypeparamTest/chans.go builder_test.go:805: Input: /home/swarming/.swarming/w/ir/x/w/goroot/test/typeparam/chans.go runtime: pointer 0x10810000 to unused region of span span.base()=0x23e6000 span.limit=0x23e7fa0 span.state=1 fatal error: found bad pointer in Go heap (incorrect use of unsafe or cgo?) runtime stack: runtime.throw({0xc7f21, 0x3e}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/panic.go:1067 +0x3 fp=0x50bb08 sp=0x50bae0 pc=0x14cd0003 runtime.badPointer(0x1c871b8, 0x10810000, 0x0, 0x0) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mbitmap.go:1247 +0xe fp=0x50bb48 sp=0x50bb08 pc=0x10c3000e ... runtime.gopark(0xd27e0, 0x1ac0e60, 0x1a, 0xa, 0x0) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:424 +0x22 fp=0x184a738 sp=0x184a710 pc=0x14cf0022 runtime.gcBgMarkWorker(0x1aea9a0) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgc.go:1363 +0x1f fp=0x184a7d0 sp=0x184a738 pc=0x1100001f runtime.gcBgMarkStartWorkers.gowrap1() /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgc.go:1279 +0x2 fp=0x184a7e0 sp=0x184a7d0 pc=0x10ff0002 runtime.goexit({}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:434 +0x1 fp=0x184a7e8 sp=0x184a7e0 pc=0x15410001 created by runtime.gcBgMarkStartWorkers in goroutine 41 /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgc.go:1279 +0x28

watchflakes

gopherbot commented 1 week ago

Found new dashboard test flakes for:

#!watchflakes
post <- goarch == "wasm" && pkg == "golang.org/x/tools/go/ssa" && `fatal error: found bad pointer in Go heap`
2024-09-04 20:07 x_tools-go1.23-wasip1-wasm_wazero tools@4fb36d15 release-branch.go1.23@69234ded x/tools/go/ssa.TestTypeparamTest/chans.go [ABORT] (log) === RUN TestTypeparamTest/chans.go builder_test.go:805: Input: /home/swarming/.swarming/w/ir/x/w/goroot/test/typeparam/chans.go runtime: pointer 0x10810000 to unallocated span span.base()=0x10800000 span.limit=0x108f7f90 span.state=0 fatal error: found bad pointer in Go heap (incorrect use of unsafe or cgo?) runtime stack: runtime.throw({0xc7e85, 0x3e}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/panic.go:1067 +0x3 fp=0x50bb28 sp=0x50bb00 pc=0x14cd0003 runtime.badPointer(0x1c863d8, 0x10810000, 0x0, 0x0) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mbitmap.go:1247 +0xe fp=0x50bb68 sp=0x50bb28 pc=0x10c3000e ... runtime.gopark(0xd2740, 0x1aa7000, 0x1a, 0xa, 0x0) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/proc.go:424 +0x22 fp=0x1858738 sp=0x1858710 pc=0x14cf0022 runtime.gcBgMarkWorker(0x1af29a0) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgc.go:1363 +0x1f fp=0x18587d0 sp=0x1858738 pc=0x1100001f runtime.gcBgMarkStartWorkers.gowrap1() /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgc.go:1279 +0x2 fp=0x18587e0 sp=0x18587d0 pc=0x10ff0002 runtime.goexit({}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:434 +0x1 fp=0x18587e8 sp=0x18587e0 pc=0x15410001 created by runtime.gcBgMarkStartWorkers in goroutine 41 /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mgc.go:1279 +0x28

watchflakes

gopherbot commented 5 days ago

Found new dashboard test flakes for:

#!watchflakes
post <- goarch == "wasm" && pkg == "golang.org/x/tools/go/ssa" && `fatal error: found bad pointer in Go heap`
2024-09-09 22:08 x_tools-go1.23-wasip1-wasm_wasmtime tools@8ba91691 release-branch.go1.23@e6598e7b x/tools/go/ssa.TestTypeparamTest/chans.go [ABORT] (log) === RUN TestTypeparamTest/chans.go builder_test.go:805: Input: /home/swarming/.swarming/w/ir/x/w/goroot/test/typeparam/chans.go runtime: pointer 0x10810000 to unused region of span span.base()=0x18e4000 span.limit=0x18e5fe0 span.state=1 fatal error: found bad pointer in Go heap (incorrect use of unsafe or cgo?) runtime stack: runtime.throw({0xc800c, 0x3e}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/panic.go:1067 +0x3 fp=0x50bb28 sp=0x50bb00 pc=0x14cd0003 runtime.badPointer(0x1c7b3e8, 0x10810000, 0x0, 0x0) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/mbitmap.go:1247 +0xe fp=0x50bb68 sp=0x50bb28 pc=0x10c3000e ... golang.org/x/tools/go/ssa_test.TestTypeparamTest.func1(0x9fc5860) /home/swarming/.swarming/w/ir/x/w/targetrepo1817933112/go/ssa/builder_test.go:832 +0x4d fp=0x4bf7f60 sp=0x4bf7df0 pc=0x2ab6004d testing.tRunner(0x9fc5860, 0xa04b068) /home/swarming/.swarming/w/ir/x/w/goroot/src/testing/testing.go:1690 +0x12 fp=0x4bf7fc8 sp=0x4bf7f60 pc=0x1a6e0012 testing.(*T).Run.gowrap1() /home/swarming/.swarming/w/ir/x/w/goroot/src/testing/testing.go:1743 +0x2 fp=0x4bf7fe0 sp=0x4bf7fc8 pc=0x1a740002 runtime.goexit({}) /home/swarming/.swarming/w/ir/x/w/goroot/src/runtime/asm_wasm.s:434 +0x1 fp=0x4bf7fe8 sp=0x4bf7fe0 pc=0x15410001 created by testing.(*T).Run in goroutine 599 /home/swarming/.swarming/w/ir/x/w/goroot/src/testing/testing.go:1743 +0x46

watchflakes

gopherbot commented 4 days ago

Change https://go.dev/cl/612398 mentions this issue: go/ssa: disable TestTypeparamTest/chan.go on wasm

timothy-king commented 4 days ago

Relevant line is:

go/types.(*typeWriter).typ(0x182d790, {0x1375f0, 0xa0b6b58})
    /home/swarming/.swarming/w/ir/x/w/goroot/src/go/types/typestring.go:120 +0x6 fp=0x182d678 sp=0x182d4b8 pc=0x22750006

Relevant code:

    w.seen[typ] = true // <- complaint is here
    defer delete(w.seen, typ) 

My hunch is that this is an interaction with the next line defer delete(w.seen, typ) on wasm, but I am not sure. I'm going to disable the flaky test for now, but wasm folks might want to take a look. CC @golang/wasm