bodyclose icon indicating copy to clipboard operation
bodyclose copied to clipboard

fatal error: stack overflow

Open ldez opened this issue 1 year ago • 4 comments

log
runtime: goroutine stack exceeds 1000000000-byte limit
runtime: sp=0xc020988380 stack=[0xc020988000, 0xc040988000]
fatal error: stack overflow

runtime stack:
runtime.throw({0x7403df?, 0xc00069bec8?})
        /home/ldez/.gvm/gos/go1.23.2/src/runtime/panic.go:1067 +0x48 fp=0xc00069be88 sp=0xc00069be58 pc=0x469948
runtime.newstack()
        /home/ldez/.gvm/gos/go1.23.2/src/runtime/stack.go:1117 +0x5bd fp=0xc00069bfc8 sp=0xc00069be88 pc=0x44f1bd
runtime.morestack()
        /home/ldez/.gvm/gos/go1.23.2/src/runtime/asm_amd64.s:621 +0x7a fp=0xc00069bfd0 sp=0xc00069bfc8 pc=0x46f0da

goroutine 6 gp=0xc0000076c0 m=13 mp=0xc000320008 [running]:
runtime.deductAssistCredit(0x40?)
        /home/ldez/.gvm/gos/go1.23.2/src/runtime/malloc.go:1333 +0x70 fp=0xc020988390 sp=0xc020988388 pc=0x40d350
runtime.mallocgc(0x40, 0x6db620, 0x1)
        /home/ldez/.gvm/gos/go1.23.2/src/runtime/malloc.go:1037 +0xde fp=0xc020988430 sp=0xc020988390 pc=0x464ede
runtime.makeslice(0xc0209884d8?, 0x4661fb?, 0x98?)
        /home/ldez/.gvm/gos/go1.23.2/src/runtime/slice.go:116 +0x49 fp=0xc020988458 sp=0xc020988430 pc=0x46b4e9
bytes.(*Buffer).grow(0xc00b1377a0, 0x5)
        /home/ldez/.gvm/gos/go1.23.2/src/bytes/buffer.go:137 +0x1a5 fp=0xc020988490 sp=0xc020988458 pc=0x4d7c65
bytes.(*Buffer).WriteString(0xc00b1377a0, {0x73d203, 0x5})
        /home/ldez/.gvm/gos/go1.23.2/src/bytes/buffer.go:191 +0x59 fp=0xc0209884c0 sp=0xc020988490 pc=0x4d7e79
go/types.(*typeWriter).string(...)
        /home/ldez/.gvm/gos/go1.23.2/src/go/types/typestring.go:105
go/types.(*typeWriter).typeName(0xc0209886d0, 0xc0000a8c80)
        /home/ldez/.gvm/gos/go1.23.2/src/go/types/typestring.go:435 +0x65 fp=0xc0209884e8 sp=0xc0209884c0 pc=0x598b05
go/types.(*typeWriter).typ(0xc0209886d0, {0x7b09e0, 0xc0000d81c0})
        /home/ldez/.gvm/gos/go1.23.2/src/go/types/typestring.go:300 +0x957 fp=0xc0209886b8 sp=0xc0209884e8 pc=0x597977
go/types.WriteType(0xc00b1377a0, {0x7b09e0, 0xc0000d81c0}, 0x0)
        /home/ldez/.gvm/gos/go1.23.2/src/go/types/typestring.go:60 +0x72 fp=0xc020988710 sp=0xc0209886b8 pc=0x596db2
go/types.TypeString({0x7b09e0, 0xc0000d81c0}, 0x0)
        /home/ldez/.gvm/gos/go1.23.2/src/go/types/typestring.go:52 +0x46 fp=0xc020988748 sp=0xc020988710 pc=0x596ca6
golang.org/x/tools/go/ssa.relType({0x7b09e0?, 0xc0000d81c0?}, 0x0?)
        ../../../../pkg/mod/golang.org/x/[email protected]/go/ssa/print.go:47 +0x85 fp=0xc020988790 sp=0xc020988748 pc=0x5d4545
golang.org/x/tools/go/ssa.(*Const).RelString(0xc0007c4160, 0x0)
        ../../../../pkg/mod/golang.org/x/[email protected]/go/ssa/const.go:93 +0x155 fp=0xc020988830 sp=0xc020988790 pc=0x5c2e95
golang.org/x/tools/go/ssa.(*Const).Name(0x0?)
        ../../../../pkg/mod/golang.org/x/[email protected]/go/ssa/const.go:135 +0x15 fp=0xc020988850 sp=0xc020988830 pc=0x5c33b5
github.com/timakin/bodyclose/passes/bodyclose.isErrNotEqNil(0xc00b137680?)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:314 +0x7c fp=0xc020988870 sp=0xc020988850 pc=0x60723c
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:299 +0x53 fp=0xc0209888b0 sp=0xc020988870 pc=0x607113
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0209888f0 sp=0xc0209888b0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988930 sp=0xc0209888f0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988970 sp=0xc020988930 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0209889b0 sp=0xc020988970 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0209889f0 sp=0xc0209889b0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988a30 sp=0xc0209889f0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988a70 sp=0xc020988a30 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988ab0 sp=0xc020988a70 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988af0 sp=0xc020988ab0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988b30 sp=0xc020988af0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988b70 sp=0xc020988b30 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988bb0 sp=0xc020988b70 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988bf0 sp=0xc020988bb0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988c30 sp=0xc020988bf0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988c70 sp=0xc020988c30 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988cb0 sp=0xc020988c70 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988cf0 sp=0xc020988cb0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988d30 sp=0xc020988cf0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988d70 sp=0xc020988d30 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988db0 sp=0xc020988d70 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988df0 sp=0xc020988db0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988e30 sp=0xc020988df0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988e70 sp=0xc020988e30 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988eb0 sp=0xc020988e70 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988ef0 sp=0xc020988eb0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988f30 sp=0xc020988ef0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988f70 sp=0xc020988f30 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988fb0 sp=0xc020988f70 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020988ff0 sp=0xc020988fb0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020989030 sp=0xc020988ff0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020989070 sp=0xc020989030 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0209890b0 sp=0xc020989070 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0209890f0 sp=0xc0209890b0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020989130 sp=0xc0209890f0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc020989170 sp=0xc020989130 pc=0x607165
...8388473 frames elided...
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040986ff0 sp=0xc040986fb0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987030 sp=0xc040986ff0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987070 sp=0xc040987030 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409870b0 sp=0xc040987070 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409870f0 sp=0xc0409870b0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987130 sp=0xc0409870f0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987170 sp=0xc040987130 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409871b0 sp=0xc040987170 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409871f0 sp=0xc0409871b0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987230 sp=0xc0409871f0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987270 sp=0xc040987230 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409872b0 sp=0xc040987270 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409872f0 sp=0xc0409872b0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987330 sp=0xc0409872f0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987370 sp=0xc040987330 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409873b0 sp=0xc040987370 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409873f0 sp=0xc0409873b0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987430 sp=0xc0409873f0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987470 sp=0xc040987430 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409874b0 sp=0xc040987470 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409874f0 sp=0xc0409874b0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987530 sp=0xc0409874f0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987570 sp=0xc040987530 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409875b0 sp=0xc040987570 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409875f0 sp=0xc0409875b0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987630 sp=0xc0409875f0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987670 sp=0xc040987630 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409876b0 sp=0xc040987670 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409876f0 sp=0xc0409876b0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987730 sp=0xc0409876f0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987770 sp=0xc040987730 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409877b0 sp=0xc040987770 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409877f0 sp=0xc0409877b0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987830 sp=0xc0409877f0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987870 sp=0xc040987830 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409878b0 sp=0xc040987870 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc0409878f0 sp=0xc0409878b0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc000147760)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987930 sp=0xc0409878f0 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranchInBlock(0xc0001476b0)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:304 +0xa5 fp=0xc040987970 sp=0xc040987930 pc=0x607165
github.com/timakin/bodyclose/passes/bodyclose.countRequiredBranch({0x7b3e78?, 0xc0002a20c0?})
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:286 +0xcf fp=0xc0409879b8 sp=0xc040987970 pc=0x60704f
github.com/timakin/bodyclose/passes/bodyclose.(*runner).isopen(0xc040987be0, 0xc000147760, 0x1)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:142 +0x2ec fp=0xc040987b08 sp=0xc0409879b8 pc=0x60666c
github.com/timakin/bodyclose/passes/bodyclose.runner.run({0xc000136750, {0x7b64b8, 0xc000318e60}, 0xc0007bee20, {0x7b6418, 0xc00034b4a0}, 0xc00009d5c0, 0xc0001df230}, 0xc000136750)
        ../../../..langci-lint/bodyclose/passes/bodyclose/bodyclose.go:99 +0x5c5 fp=0xc040987be0 sp=0xc040987b08 pc=0x606285
github.com/timakin/bodyclose/passes/bodyclose.runner.run-fm(0x6e8e00?)
        <autogenerated>:1 +0x45 fp=0xc040987c38 sp=0xc040987be0 pc=0x6082a5
golang.org/x/tools/go/analysis/unitchecker.run.func2.1()
        ../../../../pkg/mod/golang.org/x/[email protected]/go/analysis/unitchecker/unitchecker.go:381 +0x8ce fp=0xc040987e40 sp=0xc040987c38 pc=0x6bb1ae
sync.(*Once).doSlow(0x6e9100?, 0xc000403ef0?)
        /home/ldez/.gvm/gos/go1.23.2/src/sync/once.go:76 +0xb4 fp=0xc040987ea0 sp=0xc040987e40 pc=0x483cb4
sync.(*Once).Do(...)
        /home/ldez/.gvm/gos/go1.23.2/src/sync/once.go:67
golang.org/x/tools/go/analysis/unitchecker.run.func2(0x975b00)
        ../../../../pkg/mod/golang.org/x/[email protected]/go/analysis/unitchecker/unitchecker.go:332 +0x19e fp=0xc040987fa0 sp=0xc040987ea0 pc=0x6ba89e
golang.org/x/tools/go/analysis/unitchecker.run.func3.1(0x0?)
        ../../../../pkg/mod/golang.org/x/[email protected]/go/analysis/unitchecker/unitchecker.go:403 +0x23 fp=0xc040987fc8 sp=0xc040987fa0 pc=0x6ba6c3
golang.org/x/tools/go/analysis/unitchecker.run.func3.gowrap1()
        ../../../../pkg/mod/golang.org/x/[email protected]/go/analysis/unitchecker/unitchecker.go:405 +0x24 fp=0xc040987fe0 sp=0xc040987fc8 pc=0x6ba664
runtime.goexit({})
        /home/ldez/.gvm/gos/go1.23.2/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc040987fe8 sp=0xc040987fe0 pc=0x470e01
created by golang.org/x/tools/go/analysis/unitchecker.run.func3 in goroutine 1
        ../../../../pkg/mod/golang.org/x/[email protected]/go/analysis/unitchecker/unitchecker.go:402 +0x47

The regression comes from https://github.com/timakin/bodyclose/pull/66

I tested the following commits to be sure of the root cause:

  • a60ea02 -> OK
  • 0b90aa1 -> OK
  • 699fab1 -> OK
  • ed6a65f -> OK
  • adbc21e -> panic
slice range
package sandbox

import (
	"io"
	"net/http"
)

func Foo(req *http.Request, items []string) {
	for range items {
		resp, err := http.DefaultClient.Do(req)
		if err != nil {
			continue
		}

		io.ReadAll(resp.Body)

		return
	}
}

int range
package sandbox

import (
	"io"
	"net/http"
)

func Foo(req *http.Request) {
	for range 10 {
		resp, err := http.DefaultClient.Do(req)
		if err != nil {
			continue
		}

		io.ReadAll(resp.Body)

		return
	}
}
infinite loop
package sandbox

import (
	"io"
	"net/http"
)

func Foo(req *http.Request) {
	for {
		resp, err := http.DefaultClient.Do(req)
		if err != nil {
			continue
		}

		io.ReadAll(resp.Body)

		return
	}
}
map range
package sandbox

import (
	"io"
	"net/http"
)

func Foo(req *http.Request, items map[string]string) {
	for k, v := range items {
		resp, err := http.DefaultClient.Do(req)
		if err != nil {
			continue
		}

		io.ReadAll(resp.Body)

		_ = k
		_ = v
	}
}

Note: a simple for i := 0; i < 10; i++ { does not panic.

The recursive iteration on ssa.BasicBlock (Succs) is a problem because of cyclic relations: https://github.com/golang/tools/blob/2ab3b5143581f36ca417dd73637437ef1df628a8/go/ssa/ssa.go#L394

ping @ma91n

ldez avatar Oct 17 '24 14:10 ldez

Also having this issue in my application. The examples outlined above are also what I am hitting.

benw10-1 avatar Oct 17 '24 20:10 benw10-1

This is not the same problem, I think it's better if you open a dedicated issue.

ldez avatar Oct 17 '24 20:10 ldez

This is not the same problem, I think it's better if you open a dedicated issue.

Moved to #68, thanks for pointing that out

benw10-1 avatar Oct 17 '24 21:10 benw10-1

But additionally, I think adbc21e6bf369ca6d936dbb140733f34867639bd should be reverted, at least for now.

The subject needs to be rethought, the implementation has too many side effects.

ldez avatar Oct 17 '24 21:10 ldez