redis / go-redis

Redis Go client
https://redis.uptrace.dev
BSD 2-Clause "Simplified" License
19.65k stars 2.32k forks source link

panic: runtime error: invalid memory address or nil pointer dereference #2859

Open hengyumo opened 6 months ago

hengyumo commented 6 months ago

Current Behavior

panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x473670]

goroutine 3634082 [running]: bufio.(Writer).Write(0xc014802a00, {0x0?, 0x2ae87eb90770?, 0x62b5?}) /data/golang/go/src/bufio/bufio.go:680 +0x175 github.com/redis/go-redis/v9/internal/proto.(Writer).bytes(0xc014802a40, {0x0, 0x10, 0x10}) /data/golang/go/bin/pkg/mod/github.com/redis/go-redis/v9@v9.3.0/internal/proto/writer.go:158 +0x7c github.com/redis/go-redis/v9/internal/proto.(Writer).string(...) /data/golang/go/bin/pkg/mod/github.com/redis/go-redis/v9@v9.3.0/internal/proto/writer.go:166 github.com/redis/go-redis/v9/internal/proto.(Writer).WriteArg(0xc014802a40, {0x1681f40?, 0xc0140b8da0?}) /data/golang/go/bin/pkg/mod/github.com/redis/go-redis/v9@v9.3.0/internal/proto/writer.go:67 +0xdc github.com/redis/go-redis/v9/internal/proto.(Writer).WriteArgs(0xc014802a40, {0xc01363a9c0, 0x3, 0xc00b749c98?}) /data/golang/go/bin/pkg/mod/github.com/redis/go-redis/v9@v9.3.0/internal/proto/writer.go:47 +0xac github.com/redis/go-redis/v9.writeCmd(0x287d860?, {0x1be9810?, 0xc010d61a40?}) /data/golang/go/bin/pkg/mod/github.com/redis/go-redis/v9@v9.3.0/command.go:62 +0x3f github.com/redis/go-redis/v9.writeCmds(...) /data/golang/go/bin/pkg/mod/github.com/redis/go-redis/v9@v9.3.0/command.go:54 github.com/redis/go-redis/v9.(ClusterClient).processTxPipelineNodeConn.func1(0xc00f9161e0?) /data/golang/go/bin/pkg/mod/github.com/redis/go-redis/v9@v9.3.0/osscluster.go:1494 +0x65 github.com/redis/go-redis/v9/internal/pool.(Conn).WithWriter(0xc00f9161e0, {0x1be0608?, 0xc0000460a0?}, 0x0?, 0xc00b749d28) /data/golang/go/bin/pkg/mod/github.com/redis/go-redis/v9@v9.3.0/internal/pool/conn.go:90 +0x16f github.com/redis/go-redis/v9.(ClusterClient).processTxPipelineNodeConn(0xc008c92500, {0x1be0678, 0xc01363aa50}, 0x8?, 0xc009363de0?, {0xc00e2f3a00, 0x4, 0x4}, 0xc0140b8e50) /data/golang/go/bin/pkg/mod/github.com/redis/go-redis/v9@v9.3.0/osscluster.go:1493 +0xc7 github.com/redis/go-redis/v9.(ClusterClient).processTxPipelineNode.func1({0x1be0678, 0xc01363aa50}, {0xc00e2f3a00, 0x4, 0x4}) /data/golang/go/bin/pkg/mod/github.com/redis/go-redis/v9@v9.3.0/osscluster.go:1484 +0x1f4 github.com/redis/go-redis/v9.(hooksMixin).withProcessPipelineHook(0xc0002c67f0, {0x1be0678, 0xc01363aa50}, {0xc00e2f3a00, 0x4, 0x4}, 0xc009363f30?) /data/golang/go/bin/pkg/mod/github.com/redis/go-redis/v9@v9.3.0/redis.go:164 +0xbf github.com/redis/go-redis/v9.(ClusterClient).processTxPipelineNode(0xc008c92500, {0x1be0678?, 0xc01363aa50}, 0xc009326498, {0xc00df6c7e0, 0x2, 0x2009d4c0c?}, 0xc0140b8e50) /data/golang/go/bin/pkg/mod/github.com/redis/go-redis/v9@v9.3.0/osscluster.go:1472 +0x31b github.com/redis/go-redis/v9.(ClusterClient).processTxPipeline.func1(0x0?, {0xc00df6c7e0?, 0x9f0cc6?, 0xc0130f9d40?}) /data/golang/go/bin/pkg/mod/github.com/redis/go-redis/v9@v9.3.0/osscluster.go:1444 +0x85 created by github.com/redis/go-redis/v9.(*ClusterClient).processTxPipeline /data/golang/go/bin/pkg/mod/github.com/redis/go-redis/v9@v9.3.0/osscluster.go:1442 +0x4ba

Steps to Reproduce

This error occurred by chance during the running of our live service

This exception occurs and cannot be caught, causing the program to terminate

Detailed Description

I suspected that there were concurrent writes, but a closer inspection of the code didn't find lines that were modifying arguments concurrently Hopefully we can get some help in locating this problem

Our sincerest thanks again for your support.