os:在dragonfly上测试FifoEOF时出现明显的死锁,

qf9go6mv  于 5个月前  发布在  Go
关注(0)|答案(6)|浏览(127)
#!watchflakes
post <- goos == "dragonfly" && pkg == "os" && test == "TestFifoEOF" && `panic: test timed out`

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

panic: test timed out after 3m0s
running tests:
	TestFifoEOF (3m0s)

syscall.Syscall(0x5, 0xc0000ba210, 0x20001, 0x0)
	/tmp/workdir/go/src/syscall/asm_unix_amd64.s:19 +0x9 fp=0xc0000afde0 sp=0xc0000afdd0 pc=0x47b169
syscall.Open({0xc0000ba1b0?, 0x28?}, 0x59e080?, 0x0)
	/tmp/workdir/go/src/syscall/zsyscall_dragonfly_amd64.go:848 +0x87 fp=0xc0000afe50 sp=0xc0000afde0 pc=0x479b07
os.open(...)
	/tmp/workdir/go/src/os/file_open_unix.go:15
os.openFileNolog({0xc0000ba1b0, 0x2f}, 0x1, 0x0)
	/tmp/workdir/go/src/os/file_unix.go:272 +0xe5 fp=0xc0000afea0 sp=0xc0000afe50 pc=0x49dec5
os.OpenFile({0xc0000ba1b0, 0x2f}, 0x1, 0x621dc4?)
	/tmp/workdir/go/src/os/file.go:334 +0x3e fp=0xc0000afed8 sp=0xc0000afea0 pc=0x49b8de
os_test.TestFifoEOF(0xc000146b60)
	/tmp/workdir/go/src/os/fifo_test.go:50 +0x168 fp=0xc0000aff70 sp=0xc0000afed8 pc=0x53b788
testing.tRunner(0xc000146b60, 0x5c59f0)

watchflakes

lhcgjxsq

lhcgjxsq1#

找到新的 Jmeter 板测试碎片:

#!watchflakes
default <- pkg == "os" && test == "TestFifoEOF"

2023-09-18 20:29 dragonfly-amd64-622 go@5b123aea os.TestFifoEOF ( log )

panic: test timed out after 3m0s
running tests:
	TestFifoEOF (3m0s)

syscall.Syscall(0x5, 0xc0000ba210, 0x20001, 0x0)
	/tmp/workdir/go/src/syscall/asm_unix_amd64.s:19 +0x9 fp=0xc0000afde0 sp=0xc0000afdd0 pc=0x47b169
syscall.Open({0xc0000ba1b0?, 0x28?}, 0x59e080?, 0x0)
	/tmp/workdir/go/src/syscall/zsyscall_dragonfly_amd64.go:848 +0x87 fp=0xc0000afe50 sp=0xc0000afde0 pc=0x479b07
os.open(...)
	/tmp/workdir/go/src/os/file_open_unix.go:15
os.openFileNolog({0xc0000ba1b0, 0x2f}, 0x1, 0x0)
	/tmp/workdir/go/src/os/file_unix.go:272 +0xe5 fp=0xc0000afea0 sp=0xc0000afe50 pc=0x49dec5
os.OpenFile({0xc0000ba1b0, 0x2f}, 0x1, 0x621dc4?)
	/tmp/workdir/go/src/os/file.go:334 +0x3e fp=0xc0000afed8 sp=0xc0000afea0 pc=0x49b8de
os_test.TestFifoEOF(0xc000146b60)
	/tmp/workdir/go/src/os/fifo_test.go:50 +0x168 fp=0xc0000aff70 sp=0xc0000afed8 pc=0x53b788
testing.tRunner(0xc000146b60, 0x5c59f0)

watchflakes

h43kikqp

h43kikqp2#

(注意:@golang/dragonfly)

2jcobegt

2jcobegt4#

注意,在 goroutine dump 中,$x_1m_{0n_1}x$ 的 goroutine 不在其中,这表明对 $x_1m_{1n_1}x$ 的调用成功了(或者可能是误导性的失败?)并且解除了阻塞。

( $x_1e_{0f_1}x$)

mqkwyuun

mqkwyuun5#

我认为第一步可能是将构建环境从6.2更新到6.4。
我已经尝试了#25877中的OpenBSD示例代码,但它在当前的DragonFly版本中运行良好:

❯ ./t_fifo
reader: os.OpenFile
writer: os.OpenFile
reader: os.OpenFile done
❯ go version
go version go1.20.3 dragonfly/amd64
vlju58qv

vlju58qv6#

请注意,dragonfly构建器上的这些故障率相当低。(我怀疑这可能是某种竞争条件,这使得很难重现。)

相关问题