cockroachdb / cockroachdb/cockroach
Sentry: panic.go:791: runtime error: index out of range [24582] with length 63 (1) attached stack trace -- stack trace: | runtime.gopanic | GOROOT/src/runtime/panic.go:791 | github.com/cockro...
- Dominant language
- Go
- Stars
- 32.5k
- Forks
- 4.1k
- PR merge metrics
- PR metrics pending
Description
This issue was auto filed by Sentry. It represents a crash or reported error on a live cluster with telemetry enabled.
Sentry Link: [https://cockroach-labs.sentry.io/issues/7605151972/?referrer=webhooks_plugin](https://cockroach-labs.sentry.io/issues/7605151972/?referrer=webhooks_plugin)
Panic Message:
```
panic.go:791: runtime error: index out of range [24582] with length 63
(1) attached stack trace
-- stack trace:
| runtime.gopanic
| GOROOT/src/runtime/panic.go:791
| github.com/cockroachdb/cockroach/pkg/kv/kvserver.(*Store).SendWithWriteBytes.func1
| pkg/kv/kvserver/store_send.go:104
| runtime.gopanic
| GOROOT/src/runtime/panic.go:791
| runtime.goPanicIndex
| GOROOT/src/runtime/panic.go:115
| github.com/cockroachdb/cockroach/pkg/storage/enginepb.(*MVCCMetadata).MarshalToSizedBuffer
| bazel-out/k8-opt/bin/pkg/storage/enginepb/enginepb_go_proto_/github.com/cockroachdb/cockroach/pkg/storage/enginepb/mvcc.pb.go:649
| github.com/cockroachdb/cockroach/pkg/util/protoutil.MarshalToSizedBuffer
| pkg/util/protoutil/marshal.go:60
| github.com/cockroachdb/cockroach/pkg/storage.(*putBuffer).marshalMeta
| pkg/storage/mvcc.go:1815
| github.com/cockroachdb/cockroach/pkg/storage.MVCCMerge
| pkg/storage/mvcc.go:3114
| github.com/cockroachdb/cockroach/pkg/kv/kvserver/batcheval.Merge
| pkg/kv/kvserver/batcheval/cmd_merge.go:32
| github.com/cockroachdb/cockroach/pkg/kv/kvserver.evaluateCommand
| pkg/kv/kvserver/replica_evaluate.go:543
| github.com/cockroachdb/cockroach/pkg/kv/kvserver.evaluateBatch
| pkg/kv/kvserver/replica_evaluate.go:356
| github.com/cockroachdb/cockroach/pkg/kv/kvserver.(*Replica).evaluateWriteBatchWrapper
| pkg/kv/kvserver/replica_write.go:751
| github.com/cockroachdb/cockroach/pkg/kv/kvserver.(*Replica).evaluateWriteBatchWithServersideRefreshes
| pkg/kv/kvserver/replica_write.go:716
| github.com/cockroachdb/cockroach/pkg/kv/kvserver.(*Replica).evaluateWriteBatch
| pkg/kv/kvserver/replica_write.go:479
| github.com/cockroachdb/cockroach/pkg/kv/kvserver.(*Replica).evaluateProposal
| pkg/kv/kvserver/replica_proposal.go:999
| github.com/cockroachdb/cockroach/pkg/kv/kvserver.(*Replica).requestToProposal
| pkg/kv/kvserver/replica_proposal.go:1095
| github.com/cockroachdb/cockroach/pkg/kv/kvserver.(*Replica).evalAndPropose
| pkg/kv/kvserver/replica_raft.go:117
| github.com/cockroachdb/cockroach/pkg/kv/kvserver.(*Replica).executeWriteBatch
| pkg/kv/kvserver/replica_write.go:188
| github.com/cockroachdb/cockroach/pkg/kv/kvserver.(*Replica).executeBatchWithConcurrencyRetries
| pkg/kv/kvserver/replica_send.go:510
| github.com/cockroachdb/cockroach/pkg/kv/kvserver.(*Replica).SendWithWriteBytes
| pkg/kv/kvserver/replica_send.go:189
| github.com/cockroachdb/cockroach/pkg/kv/kvserver.(*Store).SendWithWriteBytes
| pkg/kv/kvserver/store_send.go:188
| github.com/cockroachdb/cockroach/pkg/kv/kvserver.(*Stores).SendWithWriteBytes
| pkg/kv/kvserver/stores.go:199
| github.com/cockroachdb/cockroach/pkg/server.(*Node).batchInternal
| pkg/server/node.go:1654
| github.com/cockroachdb/cockroach/pkg/server.(*Node).Batch
| pkg/server/node.go:1847
| github.com/cockroachdb/cockroach/pkg/server.(*Node).batchStreamImpl
| pkg/server/node.go:1894
| github.com/cockroachdb/cockroach/pkg/server.(*Node).BatchStream
| pkg/server/node.go:1873
| github.com/cockroachdb/cockroach/pkg/kv/kvpb._Internal_BatchStream_Handler
| bazel-out/k8-opt/bin/pkg/kv/kvpb/kvpb_go_proto_/github.com/cockroachdb/cockroach/pkg/kv/kvpb/api.pb.go:11494
| github.com/cockroachdb/cockroach/pkg/rpc.NewServerEx.StreamServerInterceptor.func13
| pkg/util/tracing/grpcinterceptor/grpc_interceptor.go:143
| google.golang.org/grpc.getChainStreamHandler.func1
| external/org_golang_google_grpc/server.go:1504
| github.com/cockroachdb/cockroach/pkg/rpc.NewServerEx.func4
| pkg/rpc/context.go:187
| google.golang.org/grpc.getChainStreamHandler.func1
| external/org_golang_google_grpc/server.go:1504
| github.com/cockroachdb/cockroach/pkg/rpc.kvAuth.streamInterceptor
| pkg/rpc/auth.go:152
Wraps: (2) runtime error: index out of range [24582] with length 63
Error types: (1) *withstack.withStack (2) runtime.boundsError
-- report composition:
runtime.boundsError
panic.go:791: *withstack.withStack (top exception)
```
Stacktrace (expand for inline code snippets):
[pkg/rpc/auth.go#L151-L153](pkg/rpc/auth.go#L151-L153)
[external/org_golang_google_grpc/server.go#L1503-L1505](external/org_golang_google_grpc/server.go#L1503-L1505)
[pkg/rpc/context.go#L186-L188](pkg/rpc/context.go#L186-L188)
[external/org_golang_google_grpc/server.go#L1503-L1505](external/org_golang_google_grpc/server.go#L1503-L1505)
[pkg/util/tracing/grpcinterceptor/grpc_interceptor.go#L142-L144](pkg/util/tracing/grpcinterceptor/grpc_interceptor.go#L142-L144)
[bazel-out/k8-opt/bin/pkg/kv/kvpb/kvpb_go_proto_/https://github.com/cockroachdb/cockroach/blob/cb540b101146345c1df9f265f65ea321c62b10b3/pkg/kv/kvpb/api.pb.go#L11493-L11495](bazel-out/k8-opt/bin/pkg/kv/kvpb/kvpb_go_proto_/https://github.com/cockroachdb/cockroach/blob/cb540b101146345c1df9f265f65ea321c62b10b3/pkg/kv/kvpb/api.pb.go#L11493-L11495)
[pkg/server/node.go#L1872-L1874](pkg/server/node.go#L1872-L1874)
[pkg/server/node.go#L1893-L1895](pkg/server/node.go#L1893-L1895)
[pkg/server/node.go#L1846-L1848](pkg/server/node.go#L1846-L1848)
[pkg/server/node.go#L1653-L1655](pkg/server/node.go#L1653-L1655)
[pkg/kv/kvserver/stores.go#L198-L200](pkg/kv/kvserver/stores.go#L198-L200)
[pkg/kv/kvserver/store_send.go#L187-L189](pkg/kv/kvserver/store_send.go#L187-L189)
[pkg/kv/kvserver/replica_send.go#L188-L190](pkg/kv/kvserver/replica_send.go#L188-L190)
[pkg/kv/kvserver/replica_send.go#L509-L511](pkg/kv/kvserver/replica_send.go#L509-L511)
[pkg/kv/kvserver/replica_write.go#L187-L189](pkg/kv/kvserver/replica_write.go#L187-L189)
[pkg/kv/kvserver/replica_raft.go#L116-L118](pkg/kv/kvserver/replica_raft.go#L116-L118)
[pkg/kv/kvserver/replica_proposal.go#L1094-L1096](pkg/kv/kvserver/replica_proposal.go#L1094-L1096)
[pkg/kv/kvserver/replica_proposal.go#L998-L1000](pkg/kv/kvserver/replica_proposal.go#L998-L1000)
[pkg/kv/kvserver/replica_write.go#L478-L480](pkg/kv/kvserver/replica_write.go#L478-L480)
[pkg/kv/kvserver/replica_write.go#L715-L717](pkg/kv/kvserver/replica_write.go#L715-L717)
[pkg/kv/kvserver/replica_write.go#L750-L752](pkg/kv/kvserver/replica_write.go#L750-L752)
[pkg/kv/kvserver/replica_evaluate.go#L355-L357](pkg/kv/kvserver/replica_evaluate.go#L355-L357)
[pkg/kv/kvserver/replica_evaluate.go#L542-L544](pkg/kv/kvserver/replica_evaluate.go#L542-L544)
[pkg/kv/kvserver/batcheval/cmd_merge.go#L31-L33](pkg/kv/kvserver/batcheval/cmd_merge.go#L31-L33)
[pkg/storage/mvcc.go#L3113-L3115](pkg/storage/mvcc.go#L3113-L3115)
[pkg/storage/mvcc.go#L1814-L1816](pkg/storage/mvcc.go#L1814-L1816)
[pkg/util/protoutil/marshal.go#L59-L61](pkg/util/protoutil/marshal.go#L59-L61)
[bazel-out/k8-opt/bin/pkg/storage/enginepb/enginepb_go_proto_/https://github.com/cockroachdb/cockroach/blob/cb540b101146345c1df9f265f65ea321c62b10b3/pkg/storage/enginepb/mvcc.pb.go#L648-L650](bazel-out/k8-opt/bin/pkg/storage/enginepb/enginepb_go_proto_/https://github.com/cockroachdb/cockroach/blob/cb540b101146345c1df9f265f65ea321c62b10b3/pkg/storage/enginepb/mvcc.pb.go#L648-L650)
[GOROOT/src/runtime/panic.go#L114-L116](GOROOT/src/runtime/panic.go#L114-L116)
[GOROOT/src/runtime/panic.go#L790-L792](GOROOT/src/runtime/panic.go#L790-L792)
[pkg/kv/kvserver/store_send.go#L103-L105](pkg/kv/kvserver/store_send.go#L103-L105)
[GOROOT/src/runtime/panic.go#L790-L792](GOROOT/src/runtime/panic.go#L790-L792)
```
pkg/rpc/auth.go in pkg/rpc.kvAuth.streamInterceptor at line 152
external/org_golang_google_grpc/server.go in google.golang.org/grpc.getChainStreamHandler.func1 at line 1504
pkg/rpc/context.go in pkg/rpc.NewServerEx.func4 at line 187
external/org_golang_google_grpc/server.go in google.golang.org/grpc.getChainStreamHandler.func1 at line 1504
pkg/util/tracing/grpcinterceptor/grpc_interceptor.go in pkg/rpc.NewServerEx.StreamServerInterceptor.func13 at line 143
bazel-out/k8-opt/bin/pkg/kv/kvpb/kvpb_go_proto_/github.com/cockroachdb/cockroach/pkg/kv/kvpb/api.pb.go in pkg/kv/kvpb._Internal_BatchStream_Handler at line 11494
pkg/server/node.go in pkg/server.(*Node).BatchStream at line 1873
pkg/server/node.go in pkg/server.(*Node).batchStreamImpl at line 1894
pkg/server/node.go in pkg/server.(*Node).Batch at line 1847
pkg/server/node.go in pkg/server.(*Node).batchInternal at line 1654
pkg/kv/kvserver/stores.go in pkg/kv/kvserver.(*Stores).SendWithWriteBytes at line 199
pkg/kv/kvserver/store_send.go in pkg/kv/kvserver.(*Store).SendWithWriteBytes at line 188
pkg/kv/kvserver/replica_send.go in pkg/kv/kvserver.(*Replica).SendWithWriteBytes at line 189
pkg/kv/kvserver/replica_send.go in pkg/kv/kvserver.(*Replica).executeBatchWithConcurrencyRetries at line 510
pkg/kv/kvserver/replica_write.go in pkg/kv/kvserver.(*Replica).executeWriteBatch at line 188
pkg/kv/kvserver/replica_raft.go in pkg/kv/kvserver.(*Replica).evalAndPropose at line 117
pkg/kv/kvserver/replica_proposal.go in pkg/kv/kvserver.(*Replica).requestToProposal at line 1095
pkg/kv/kvserver/replica_proposal.go in pkg/kv/kvserver.(*Replica).evaluateProposal at line 999
pkg/kv/kvserver/replica_write.go in pkg/kv/kvserver.(*Replica).evaluateWriteBatch at line 479
pkg/kv/kvserver/replica_write.go in pkg/kv/kvserver.(*Replica).evaluateWriteBatchWithServersideRefreshes at line 716
pkg/kv/kvserver/replica_write.go in pkg/kv/kvserver.(*Replica).evaluateWriteBatchWrapper at line 751
pkg/kv/kvserver/replica_evaluate.go in pkg/kv/kvserver.evaluateBatch at line 356
pkg/kv/kvserver/replica_evaluate.go in pkg/kv/kvserver.evaluateCommand at line 543
pkg/kv/kvserver/batcheval/cmd_merge.go in pkg/kv/kvserver/batcheval.Merge at line 32
pkg/storage/mvcc.go in pkg/storage.MVCCMerge at line 3114
pkg/storage/mvcc.go in pkg/storage.(*putBuffer).marshalMeta at line 1815
pkg/util/protoutil/marshal.go in pkg/util/protoutil.MarshalToSizedBuffer at line 60
bazel-out/k8-opt/bin/pkg/storage/enginepb/enginepb_go_proto_/github.com/cockroachdb/cockroach/pkg/storage/enginepb/mvcc.pb.go in pkg/storage/enginepb.(*MVCCMetadata).MarshalToSizedBuffer at line 649
GOROOT/src/runtime/panic.go in runtime.goPanicIndex at line 115
GOROOT/src/runtime/panic.go in runtime.gopanic at line 791
pkg/kv/kvserver/store_send.go in pkg/kv/kvserver.(*Store).SendWithWriteBytes.func1 at line 104
GOROOT/src/runtime/panic.go in runtime.gopanic at line 791
```
### Tags
| Tag | Value |
| --- | --- |
| Command | server |
| Environment | v25.3.0 |
| Go Version | go1.23.7 X:nocoverageredesign |
| Platform | linux amd64 |
| Distribution | CCL |
| Cockroach Release | v25.3.0 |
| Cockroach SHA | cb540b101146345c1df9f265f65ea321c62b10b3 |
| # of CPUs | 16 |
| # of Goroutines | 947 |
Jira issue: CRDB-65704
Contributor guide
Research direction
Start with pkg/storage/mvcc.go at MVCCMerge and putBuffer.marshalMeta, then trace the failing call into pkg/storage/enginepb/mvcc.pb.go and pkg/util/protoutil/marshal.go. Determine why MVCCMetadata.MarshalToSizedBuffer indexes beyond its buffer during a Merge, and verify that the reported panic no longer occurs with regression coverage.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100