Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fmt: stack overflow with self-referenced map #53237

Closed
storozhukBM opened this issue Jun 5, 2022 · 4 comments
Closed

fmt: stack overflow with self-referenced map #53237

storozhukBM opened this issue Jun 5, 2022 · 4 comments

Comments

@storozhukBM
Copy link

What version of Go are you using (go version)?

$ go version
go version go1.18.3 darwin/arm64

Does this issue reproduce with the latest release?

Yes

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
GO111MODULE=""
GOARCH="arm64"
GOBIN=""
GOCACHE="/Users/bohdanstorozhuk/Library/Caches/go-build"
GOENV="/Users/bohdanstorozhuk/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="arm64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/bohdanstorozhuk/.gvm/pkgsets/go1.18.3/global/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/bohdanstorozhuk/.gvm/pkgsets/go1.18.3/global"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/Users/bohdanstorozhuk/.gvm/gos/go1.18.3"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/pkg/tool/darwin_arm64"
GOVCS=""
GOVERSION="go1.18.3"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/bohdanstorozhuk/Projects/immcheck/go.mod"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/rj/q28sjpfs5bj72m96p09l5nqr0000gn/T/go-build4100448447=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?

func TestPrint(t *testing.T) {
	data := map[string]interface{}{}
	data["data"] = data
	fmt.Printf("%#v\n", data)
}

What did you expect to see?

Hard to tell, maybe:

map[string]interface {}{"data":(map[string]interface {})(0x1400000e038)}

What did you see instead?

fatal error: stack overflow Full stacktrace

runtime: goroutine stack exceeds 1000000000-byte limit
runtime: sp=0x140201c0380 stack=[0x140201c0000, 0x140401c0000]
fatal error: stack overflow

runtime stack:
runtime.throw({0x1023a0a99?, 0x1024a72a0?})
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/runtime/panic.go:992 +0x50
runtime.newstack()
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/runtime/stack.go:1101 +0x46c
runtime.morestack()
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/runtime/asm_arm64.s:314 +0x70

goroutine 18 [running]:
runtime.assertE2I2(0x1023e61a0?, {0x1023de5a0?, 0x1400925d320?})
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/runtime/iface.go:456 +0x84 fp=0x140201c0380 sp=0x140201c0380 pc=0x1022b1b64
fmt.(*pp).handleMethods(0x14000095380, 0x925d320?)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:590 +0xb8 fp=0x140201c05e0 sp=0x140201c0380 pc=0x102344ad8
fmt.(*pp).printValue(0x14000095380, {0x1023de5a0?, 0x1400925d320?, 0x0?}, 0x76, 0xea0e5)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:723 +0xa4 fp=0x140201c0810 sp=0x140201c05e0 pc=0x1023459b4
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0e4)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:778 +0x1b48 fp=0x140201c0a40 sp=0x140201c0810 pc=0x102347458
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d310?, 0x0?}, 0x76, 0xea0e3)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c0c70 sp=0x140201c0a40 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0e2)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c0ea0 sp=0x140201c0c70 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d2f0?, 0x0?}, 0x76, 0xea0e1)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c10d0 sp=0x140201c0ea0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0e0)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c1300 sp=0x140201c10d0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d2d0?, 0x0?}, 0x76, 0xea0df)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c1530 sp=0x140201c1300 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0de)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c1760 sp=0x140201c1530 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d2b0?, 0x0?}, 0x76, 0xea0dd)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c1990 sp=0x140201c1760 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0dc)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c1bc0 sp=0x140201c1990 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d290?, 0x0?}, 0x76, 0xea0db)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c1df0 sp=0x140201c1bc0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0da)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c2020 sp=0x140201c1df0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d270?, 0x0?}, 0x76, 0xea0d9)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c2250 sp=0x140201c2020 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0d8)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c2480 sp=0x140201c2250 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d250?, 0x0?}, 0x76, 0xea0d7)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c26b0 sp=0x140201c2480 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0d6)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c28e0 sp=0x140201c26b0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d230?, 0x0?}, 0x76, 0xea0d5)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c2b10 sp=0x140201c28e0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0d4)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c2d40 sp=0x140201c2b10 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d210?, 0x0?}, 0x76, 0xea0d3)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c2f70 sp=0x140201c2d40 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0d2)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c31a0 sp=0x140201c2f70 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d1f0?, 0x0?}, 0x76, 0xea0d1)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c33d0 sp=0x140201c31a0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0d0)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c3600 sp=0x140201c33d0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d1d0?, 0x0?}, 0x76, 0xea0cf)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c3830 sp=0x140201c3600 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0ce)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c3a60 sp=0x140201c3830 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d1b0?, 0x0?}, 0x76, 0xea0cd)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c3c90 sp=0x140201c3a60 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0cc)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c3ec0 sp=0x140201c3c90 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d190?, 0x0?}, 0x76, 0xea0cb)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c40f0 sp=0x140201c3ec0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0ca)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c4320 sp=0x140201c40f0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d170?, 0x0?}, 0x76, 0xea0c9)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c4550 sp=0x140201c4320 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0c8)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c4780 sp=0x140201c4550 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d150?, 0x0?}, 0x76, 0xea0c7)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c49b0 sp=0x140201c4780 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0c6)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c4be0 sp=0x140201c49b0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d130?, 0x0?}, 0x76, 0xea0c5)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c4e10 sp=0x140201c4be0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0c4)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c5040 sp=0x140201c4e10 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d110?, 0x0?}, 0x76, 0xea0c3)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c5270 sp=0x140201c5040 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0c2)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c54a0 sp=0x140201c5270 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d0f0?, 0x0?}, 0x76, 0xea0c1)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c56d0 sp=0x140201c54a0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0c0)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c5900 sp=0x140201c56d0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d0d0?, 0x0?}, 0x76, 0xea0bf)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c5b30 sp=0x140201c5900 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0be)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c5d60 sp=0x140201c5b30 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d0b0?, 0x0?}, 0x76, 0xea0bd)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c5f90 sp=0x140201c5d60 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0bc)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c61c0 sp=0x140201c5f90 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d090?, 0x0?}, 0x76, 0xea0bb)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c63f0 sp=0x140201c61c0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0ba)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c6620 sp=0x140201c63f0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d070?, 0x0?}, 0x76, 0xea0b9)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c6850 sp=0x140201c6620 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0b8)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c6a80 sp=0x140201c6850 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d050?, 0x0?}, 0x76, 0xea0b7)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c6cb0 sp=0x140201c6a80 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0b6)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c6ee0 sp=0x140201c6cb0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d030?, 0x0?}, 0x76, 0xea0b5)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c7110 sp=0x140201c6ee0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0b4)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c7340 sp=0x140201c7110 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925d010?, 0x0?}, 0x76, 0xea0b3)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c7570 sp=0x140201c7340 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0b2)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c77a0 sp=0x140201c7570 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925cff0?, 0x0?}, 0x76, 0xea0b1)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c79d0 sp=0x140201c77a0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0b0)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c7c00 sp=0x140201c79d0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925cfd0?, 0x0?}, 0x76, 0xea0af)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c7e30 sp=0x140201c7c00 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0ae)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c8060 sp=0x140201c7e30 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925cfb0?, 0x0?}, 0x76, 0xea0ad)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c8290 sp=0x140201c8060 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0ac)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c84c0 sp=0x140201c8290 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925cf90?, 0x0?}, 0x76, 0xea0ab)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c86f0 sp=0x140201c84c0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0aa)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c8920 sp=0x140201c86f0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925cf70?, 0x0?}, 0x76, 0xea0a9)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c8b50 sp=0x140201c8920 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x1022b3a4c?}, 0x76, 0xea0a8)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c8d80 sp=0x140201c8b50 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925cf50?, 0x0?}, 0x76, 0xea0a7)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c8fb0 sp=0x140201c8d80 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0a6)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c91e0 sp=0x140201c8fb0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925cf30?, 0x0?}, 0x76, 0xea0a5)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c9410 sp=0x140201c91e0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0a4)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c9640 sp=0x140201c9410 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925cf10?, 0x0?}, 0x76, 0xea0a3)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c9870 sp=0x140201c9640 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0a2)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c9aa0 sp=0x140201c9870 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925cef0?, 0x0?}, 0x76, 0xea0a1)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201c9cd0 sp=0x140201c9aa0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea0a0)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201c9f00 sp=0x140201c9cd0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925ced0?, 0x0?}, 0x76, 0xea09f)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201ca130 sp=0x140201c9f00 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea09e)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201ca360 sp=0x140201ca130 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925ceb0?, 0x0?}, 0x76, 0xea09d)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201ca590 sp=0x140201ca360 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea09c)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201ca7c0 sp=0x140201ca590 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925ce90?, 0x0?}, 0x76, 0xea09b)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201ca9f0 sp=0x140201ca7c0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea09a)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201cac20 sp=0x140201ca9f0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925ce70?, 0x0?}, 0x76, 0xea099)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201cae50 sp=0x140201cac20 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea098)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201cb080 sp=0x140201cae50 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925ce50?, 0x0?}, 0x76, 0xea097)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201cb2b0 sp=0x140201cb080 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea096)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201cb4e0 sp=0x140201cb2b0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925ce30?, 0x0?}, 0x76, 0xea095)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201cb710 sp=0x140201cb4e0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea094)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201cb940 sp=0x140201cb710 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925ce10?, 0x0?}, 0x76, 0xea093)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201cbb70 sp=0x140201cb940 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea092)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201cbda0 sp=0x140201cbb70 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925cdf0?, 0x0?}, 0x76, 0xea091)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201cbfd0 sp=0x140201cbda0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea090)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201cc200 sp=0x140201cbfd0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925cdd0?, 0x0?}, 0x76, 0xea08f)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201cc430 sp=0x140201cc200 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea08e)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201cc660 sp=0x140201cc430 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925cdb0?, 0x0?}, 0x76, 0xea08d)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201cc890 sp=0x140201cc660 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea08c)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201ccac0 sp=0x140201cc890 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925cd90?, 0x0?}, 0x76, 0xea08b)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201cccf0 sp=0x140201ccac0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea08a)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201ccf20 sp=0x140201cccf0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925cd70?, 0x0?}, 0x76, 0xea089)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201cd150 sp=0x140201ccf20 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea088)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201cd380 sp=0x140201cd150 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925cd50?, 0x0?}, 0x76, 0xea087)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201cd5b0 sp=0x140201cd380 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea086)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201cd7e0 sp=0x140201cd5b0 pc=0x102347504
fmt.(*pp).printValue(0x14000095380, {0x1023e2140?, 0x1400925cd30?, 0x0?}, 0x76, 0xea085)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:819 +0x6d0 fp=0x140201cda10 sp=0x140201cd7e0 pc=0x102345fe0
fmt.(*pp).printValue(0x14000095380, {0x1023e43c0?, 0x140000924b0?, 0x0?}, 0x76, 0xea084)
/Users/bohdanstorozhuk/.gvm/gos/go1.18.3/src/fmt/print.go:780 +0x1bf4 fp=0x140201cdc40 sp=0x140201cda10 pc=0x102347504
...additional frames elided...

@robpike
Copy link
Contributor

robpike commented Jun 5, 2022

My unfriendly but honest response is, don't do that. In general fmt has problems with pathological data, and the fix is potentially too expensive.

@storozhukBM
Copy link
Author

@robpike
I do not insist on it, but it already detects regular pointers and empty interface cycles, so I thought it could also be implemented for maps.

@dsnet
Copy link
Member

dsnet commented Jun 5, 2022

it already detects regular pointers

I'm not sure that's the case. It just doesn't follow pointers, which isn't really a "cycle-detection" strategy per-say.

Not only does it not detect cyclic maps, it also doesn't detect cyclic slices.

At least currently, the behavior is documented:

Infinite recursion can also be triggered by self-referential data structures, such as a slice that contains itself as an element, if that type has a String method. Such pathologies are rare, however, and the package does not protect against them.

@seankhliao
Copy link
Member

Duplicate of #44942 #8241

@golang golang locked and limited conversation to collaborators Jun 5, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants