0.18.1 unstable

0.18 it worst release in long time, it crashes several times per day (another problem) and it have some minor (not crashing) problems as well, such as this:

caught panic: read more bytes than buffer size
goroutine 88420916 [running]:
runtime/debug.Stack()
        runtime/debug/stack.go:24 +0x65
github.com/multiformats/go-multistream.(*MultistreamMuxer).Negotiate.func1()
        github.com/multiformats/go-multistream@v0.3.3/multistream.go:202 +0x58
panic({0x1503040, 0x1d62900})
        runtime/panic.go:884 +0x212
github.com/multiformats/go-multistream.(*byteReader).ReadByte(0xc008663760)
        github.com/multiformats/go-multistream@v0.3.3/multistream.go:334 +0xa5
github.com/multiformats/go-varint.ReadUvarint({0x1d67120, 0xc008663760})
        github.com/multiformats/go-varint@v0.0.7/varint.go:80 +0x5a
github.com/multiformats/go-multistream.lpReadBuf({0x2104463bb90?, 0xc0100af710})
        github.com/multiformats/go-multistream@v0.3.3/multistream.go:292 +0x94
github.com/multiformats/go-multistream.ReadNextTokenBytes({0x2104463bb90?, 0xc0100af710?})
        github.com/multiformats/go-multistream@v0.3.3/multistream.go:275 +0x27
github.com/multiformats/go-multistream.ReadNextToken(...)
        github.com/multiformats/go-multistream@v0.3.3/multistream.go:264
github.com/multiformats/go-multistream.(*MultistreamMuxer).Negotiate(0x28e445?, {0x2104463bb40?, 0xc0100af710})
        github.com/multiformats/go-multistream@v0.3.3/multistream.go:226 +0x2b4
github.com/libp2p/go-libp2p/p2p/net/upgrader.(*upgrader).negotiateSecurity.func1()
        github.com/libp2p/go-libp2p@v0.24.2/p2p/net/upgrader/upgrader.go:322 +0x97
created by github.com/libp2p/go-libp2p/p2p/net/upgrader.(*upgrader).negotiateSecurity
        github.com/libp2p/go-libp2p@v0.24.2/p2p/net/upgrader/upgrader.go:318 +0x112
1 Like

I encountered another type of issue that i had never seen, related to remote pinning.

For that panic, can you reproduce it? Does it happen when you do something specific?

The error is pretty surprising since it happens only when we ask to read at most one byte and are then told we read more than 1 byte. So it’s likely an error in the underlying reader which we can’t see from the stack trace unfortunately.

2 Likes