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...

Open
#172,466 1 comment 0 reactions 0 assignees View on GitHub
branch-release-25.3 C-bug O-sentry T-kv
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.