net: TestDialerControlContext/StreamDial超时,使用可运行的syscall.Syscall goroutine,

gudnpqoy  于 4个月前  发布在  Go
关注(0)|答案(4)|浏览(58)
#!watchflakes
post <- pkg == "net" && test == "TestDialerControlContext" && `panic: test timed out` && log ~ `goroutine \d+ \[runnable\]:\nsyscall\.Syscall`

自动创建的问题以收集这些故障。
示例( log ):

panic: test timed out after 12m0s
running tests:
	TestDialerControlContext (11m59s)
	TestDialerControlContext/StreamDial (11m59s)

runtime.gopark(0x120361990, 0xc00005f248, 0xe, 0x17, 0x2)
	/tmp/gobuilder-mips64le/go/src/runtime/proc.go:398 +0x140 fp=0xc0004225e8 sp=0xc0004225d0 pc=0x120052f70
runtime.chanrecv(0xc00005f1f0, 0xc0004226cf, 0x1)
	/tmp/gobuilder-mips64le/go/src/runtime/chan.go:583 +0x5a4 fp=0xc000422658 sp=0xc0004225e8 pc=0x120009514
runtime.chanrecv1(0xc00005f1f0, 0xc0004226cf)
	/tmp/gobuilder-mips64le/go/src/runtime/chan.go:442 +0x2c fp=0xc000422680 sp=0xc000422658 pc=0x120008f14
testing.(*T).Run(0xc0002e0ea0, {0x12034a1e4, 0xa}, 0x120361590)
	/tmp/gobuilder-mips64le/go/src/testing/testing.go:1649 +0x4f0 fp=0xc000422738 sp=0xc000422680 pc=0x120140630
net.TestDialerControlContext(0xc0002e0ea0)
	/tmp/gobuilder-mips64le/go/src/net/dial_test.go:1030 +0x68 fp=0xc000422768 sp=0xc000422738 pc=0x12021c2b8
testing.tRunner(0xc0002e0ea0, 0x120360c00)

watchflakes

j8ag8udp

j8ag8udp1#

找到新的 Jmeter 板测试碎片:

#!watchflakes
default <- pkg == "net" && test == "TestDialerControlContext"

2023-09-06 19:37 linux-mips64le-rtrk go@729f214e net.TestDialerControlContext ( log )

panic: test timed out after 12m0s
running tests:
	TestDialerControlContext (11m59s)
	TestDialerControlContext/StreamDial (11m59s)

runtime.gopark(0x120361990, 0xc00005f248, 0xe, 0x17, 0x2)
	/tmp/gobuilder-mips64le/go/src/runtime/proc.go:398 +0x140 fp=0xc0004225e8 sp=0xc0004225d0 pc=0x120052f70
runtime.chanrecv(0xc00005f1f0, 0xc0004226cf, 0x1)
	/tmp/gobuilder-mips64le/go/src/runtime/chan.go:583 +0x5a4 fp=0xc000422658 sp=0xc0004225e8 pc=0x120009514
runtime.chanrecv1(0xc00005f1f0, 0xc0004226cf)
	/tmp/gobuilder-mips64le/go/src/runtime/chan.go:442 +0x2c fp=0xc000422680 sp=0xc000422658 pc=0x120008f14
testing.(*T).Run(0xc0002e0ea0, {0x12034a1e4, 0xa}, 0x120361590)
	/tmp/gobuilder-mips64le/go/src/testing/testing.go:1649 +0x4f0 fp=0xc000422738 sp=0xc000422680 pc=0x120140630
net.TestDialerControlContext(0xc0002e0ea0)
	/tmp/gobuilder-mips64le/go/src/net/dial_test.go:1030 +0x68 fp=0xc000422768 sp=0xc000422738 pc=0x12021c2b8
testing.tRunner(0xc0002e0ea0, 0x120360c00)

watchflakes

hgqdbh6s

hgqdbh6s2#

在我看来,这看起来像是一个运行时/编译器错误:测试卡住了12分钟,但从panic获取的goroutine转储显示了一个可运行的goroutine。

hgtggwj0

hgtggwj03#

这并不完全清楚,因为我们不知道goroutine运行了多长时间。在审查中,Michael Pratt指出,可能是因为当我们退出时,一个套接字被关闭(可能是通过defer或其他方式?),这实际上唤醒了syscall中的goroutine,但由于世界冻结,它无法获得P并最终意外地进入可运行状态。

相关问题