timakin / bodyclose

Analyzer: checks whether HTTP response body is closed and a re-use of TCP connection is not blocked.
MIT License
307 stars 33 forks source link

fatal error: stack overflow #67

Open ldez opened 1 week ago

ldez commented 1 week ago
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/tools@v0.14.0/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/tools@v0.14.0/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/tools@v0.14.0/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?) :1 +0x45 fp=0xc040987c38 sp=0xc040987be0 pc=0x6082a5 golang.org/x/tools/go/analysis/unitchecker.run.func2.1() ../../../../pkg/mod/golang.org/x/tools@v0.14.0/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/tools@v0.14.0/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/tools@v0.14.0/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/tools@v0.14.0/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/tools@v0.14.0/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:

slice range ```go 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 ```go 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 ```go 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 ```go 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

benw10-1 commented 1 week ago

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

ldez commented 1 week ago

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

benw10-1 commented 1 week ago

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

ldez commented 1 week ago

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.