klauspost/compress

all goroutines are asleep - deadlock

kung-foo opened this issue · 4 comments

$ s2d -verify backfill-2024-01-20-part1.tsv.s2
Decompressing backfill-2024-01-20-part1.tsv.s2 -> (verify)fatal error: all goroutines are asleep - deadlock!

goroutine 1 [chan receive]:
A8bLpkf9.(*ZTAjQ8Mt1sN).DecodeConcurrent(0xc0000c4a00, {0x70f6c0?, 0x95b7c0}, 0x400000?)
	VfKozfd0P.go:4 +0xbf3
main.main.func2(0xc000092e70, {0x69afa0, 0x8}, 0x0, 0x0, 0x0, 0xc0000c4a00)
	i1KAe4bJ0v.go:1 +0xa9d
main.main()
	OuTLN3Athff.go:4 +0x10d9

goroutine 6 [select]:
SKLy2Y0xu9.(*oz9lVfO4HX).lJlFJs.func1()
	nzSkYK29lib.go:4 +0x105
created by SKLy2Y0xu9.(*oz9lVfO4HX).lJlFJs in goroutine 1
	yC74qrhkyO3u.go:4 +0x2ba

goroutine 7 [chan receive]:
A8bLpkf9.(*ZTAjQ8Mt1sN).DecodeConcurrent.func3()
	S235yXH9.go:3 +0x118
created by A8bLpkf9.(*ZTAjQ8Mt1sN).DecodeConcurrent in goroutine 1
	dQoqsu.go:2 +0x4ac
$ dpkg-deb --info s2_package__linux_amd64.deb 
 new Debian package, version 2.0.
 size 14053886 bytes: control archive=412 bytes.
       1 bytes,     0 lines      conffiles            
     231 bytes,     9 lines      control              
     145 bytes,     3 lines      md5sums              
 Package: compress
 Version: 1.17.5
 Section: 
 Priority: optional
 Architecture: amd64
 Maintainer: Klaus Post <klauspost@gmail.com>
 Installed-Size: 22152
 Homepage: https://github.com/klauspost/compress
 Description: S2 Compression Tool

I don't have a shareable reproducer since the file above contains customer data.

@kung-foo Is this is a regression, or does it happen on older versions? Does adding --cpu=10 change this?

Looks to happen on older versions as well. Tried v1.17.4 and v1.16.7. cpu=10 or cpu=1 had no effect.

Weirdly if I go install ... it (latest) then the command just hangs

Ok! I will dig a bit deeper! Thanks for the report and double checking!

Got it reproduced. Will send a fix!