req icon indicating copy to clipboard operation
req copied to clipboard

slice bounds out of range panic

Open JamesSunXX opened this issue 2 years ago • 2 comments

panic: runtime error: slice bounds out of range [:333] with capacity 299

goroutine 4361379 [running]: bytes.(*Buffer).grow(0xc1acae3b00, 0xf) /var/jenkins_home/go/go1.17.9/src/bytes/buffer.go:148 +0x226 bytes.(*Buffer).Write(0xc1acae3b00, {0xc1acce4c90, 0xf, 0xc10482a9d0}) /var/jenkins_home/go/go1.17.9/src/bytes/buffer.go:172 +0x66 github.com/imroc/req/v3/internal/dump.(*Dumper).Dump(0xc1acb608e8, {0xc1acce4c90, 0xf, 0x10}) /root/go/pkg/mod/github.com/imroc/req/[email protected]/internal/dump/dump.go:138 +0xd6 github.com/imroc/req/v3/internal/http2.(*Framer).readMetaFrame.func2({{0x1ed12ff, 0x6}, {0xc1acce4c59, 0x5}, 0x0}) /root/go/pkg/mod/github.com/imroc/req/[email protected]/internal/http2/frame.go:1593 +0x118 golang.org/x/net/http2/hpack.(*Decoder).callEmit(0xc1ac8b9a40, {{0x1ed12ff, 0x6}, {0xc1acce4c59, 0x5}, 0x0}) /root/go/pkg/mod/golang.org/x/[email protected]/http2/hpack/hpack.go:393 +0x8d golang.org/x/net/http2/hpack.(*Decoder).parseFieldLiteral(0xc1ac8b9a40, 0x28, 0x0) /root/go/pkg/mod/golang.org/x/[email protected]/http2/hpack/hpack.go:383 +0x298 golang.org/x/net/http2/hpack.(*Decoder).parseHeaderFieldRepr(0x0) /root/go/pkg/mod/golang.org/x/[email protected]/http2/hpack/hpack.go:316 +0x107 golang.org/x/net/http2/hpack.(*Decoder).Write(0xc1ac8b9a40, {0xc1cca18580, 0xb7, 0x8}) /root/go/pkg/mod/golang.org/x/[email protected]/http2/hpack/hpack.go:262 +0x132 github.com/imroc/req/v3/internal/http2.(*Framer).readMetaFrame(0xc1ae01d770, 0xc1acceed80, {0xc1e7b91cf8, 0x1, 0x1}) /root/go/pkg/mod/github.com/imroc/req/[email protected]/internal/http2/frame.go:1606 +0x3b1 github.com/imroc/req/v3/internal/http2.(*Framer).ReadFrame(0xc1ae01d770) /root/go/pkg/mod/github.com/imroc/req/[email protected]/internal/http2/frame.go:540 +0x559 github.com/imroc/req/v3/internal/http2.(*clientConnReadLoop).run(0xc10482af98) /root/go/pkg/mod/github.com/imroc/req/[email protected]/internal/http2/transport.go:2081 +0x131 github.com/imroc/req/v3/internal/http2.(*ClientConn).readLoop(0xc1ad5da480) /root/go/pkg/mod/github.com/imroc/req/[email protected]/internal/http2/transport.go:1977 +0x6f created by github.com/imroc/req/v3/internal/http2.(*Transport).newClientConn /root/go/pkg/mod/github.com/imroc/req/[email protected]/internal/http2/transport.go:657 +0xae5

JamesSunXX avatar Oct 14 '22 13:10 JamesSunXX

See that the error is related to dump. How do you use dump?

imroc avatar Oct 16 '22 11:10 imroc

Is there code to reproduce it?

imroc avatar Oct 16 '22 11:10 imroc

fmClient := req.C().
		SetTimeout(time.Second * 3).
		EnableTraceAll().
		SetCommonRetryCount(1)

resp, err := fmClient.R().
		SetBodyJsonMarshal(data).
		EnableDump().
		EnableTrace().
		Post(domain + getToken)
	if err != nil {
		return res, err
	}

	respCode := gjson.Get(resp.String(), "errcode").Int()
	if respCode != 0 {
		logger.ErrLogger().WithFields(logrus.Fields{
			"resp":    resp.Dump(),
		}).Errorf("request invalid resp err")
		return res, requestErr
	}

JamesSunXX avatar Oct 27 '22 01:10 JamesSunXX

Can't reproduce in my environment, looking at the stack of panic, the bytes.Buffer of go1.17.9 is out of range when grow().

Has the go standard library used for compilation been modified? Or upgrade the standard library to the latest version and try again.

imroc avatar Oct 27 '22 02:10 imroc