cockroachdb / cockroachdb/cockroach
panic: runtime error: slice bounds out of range [:8192] with capacity 4096 in `ulid.(*MonotonicEntropy).random`->`bufio.(*Reader).Read`
- Dominant language
- Go
- Stars
- 32.5k
- Forks
- 4.1k
- PR merge metrics
- PR metrics pending
Description
**Describe the problem**
panic: runtime error: slice bounds out of range [:8192] with capacity 4096 in `ulid.(*MonotonicEntropy).random`->`bufio.(*Reader).Read`
And server closed the connection unexpectedly.
**To Reproduce**
SQL to init database
[init.sql.txt](https://github.com/user-attachments/files/16991122/init.sql.txt)
SQL that causes error
[error.sql.txt](https://github.com/user-attachments/files/16991125/error.sql.txt)
**Expected behavior**
Expect no crashes
**Additional data / screenshots**
Here is the crash stack trace:
```
I240913 08:20:39.746978 1 util/log/file_sync_buffer.go:238 ⋮ [config] file created at: 2024/09/13 08:20:39
I240913 08:20:39.747025 1 util/log/file_sync_buffer.go:238 ⋮ [config] running on machine: ‹413dea180dec›
I240913 08:20:39.747041 1 util/log/file_sync_buffer.go:238 ⋮ [config] binary: CockroachDB CCL v24.1.4 (x86_64-pc-linux-gnu, built 2024/08/26 19:15:49, go1.22.5 X:nocoverageredesign)
I240913 08:20:39.747053 1 util/log/file_sync_buffer.go:238 ⋮ [config] arguments: [‹/cockroach/cockroach› ‹start› ‹--advertise-addr=crdb3:26357› ‹--http-addr=crdb3:8080› ‹--listen-addr=crdb3:26357› ‹--sql-addr=crdb3:26257› ‹--insecure› ‹--join=crdb1:26357,crdb2:26357,crdb3:26357›]
I240913 08:20:39.747081 1 util/log/file_sync_buffer.go:238 ⋮ [config] log format (utf8=✓): crdb-v2
I240913 08:20:39.747089 1 util/log/file_sync_buffer.go:238 ⋮ [config] line format: [IWEF]yymmdd hh:mm:ss.uuuuuu goid [chan@]file:line redactionmark \[tags\] [counter] msg
I240913 08:20:39.746479 1 util/log/flags.go:215 [-] 1 stderr capture started
panic: runtime error: slice bounds out of range [:8192] with capacity 4096 [recovered]
panic: runtime error: slice bounds out of range [:8192] with capacity 4096 [recovered]
panic: runtime error: slice bounds out of range [:8192] with capacity 4096
goroutine 846495 [running]:
github.com/cockroachdb/cockroach/pkg/sql/colexecerror.CatchVectorizedRuntimeError.func1()
github.com/cockroachdb/cockroach/pkg/sql/colexecerror/error.go:110 +0x554
panic({0x6353d00?, 0xc0227eb4e8?})
GOROOT/src/runtime/panic.go:770 +0x132
github.com/cockroachdb/cockroach/pkg/sql/colexecerror.CatchVectorizedRuntimeError.func1()
github.com/cockroachdb/cockroach/pkg/sql/colexecerror/error.go:110 +0x554
panic({0x6353d00?, 0xc0227eb4e8?})
GOROOT/src/runtime/panic.go:770 +0x132
bufio.(*Reader).Read(0xc0177af860, {0xc010c80ab0?, 0x40?, 0x7f3378653f18?})
GOROOT/src/bufio/bufio.go:254 +0x2cd
io.ReadAtLeast({0x7f83720, 0xc0177af860}, {0xc010c80ab0, 0x4, 0x8}, 0x4)
GOROOT/src/io/io.go:335 +0x90
io.ReadFull(...)
GOROOT/src/io/io.go:354
github.com/cockroachdb/cockroach/pkg/util/ulid.(*MonotonicEntropy).random(0xc010c80a80)
github.com/cockroachdb/cockroach/pkg/util/ulid/ulid.go:615 +0xda
github.com/cockroachdb/cockroach/pkg/util/ulid.(*MonotonicEntropy).increment(0xc010c80a80)
github.com/cockroachdb/cockroach/pkg/util/ulid/ulid.go:580 +0x18
github.com/cockroachdb/cockroach/pkg/util/ulid.(*MonotonicEntropy).MonotonicRead(0xc010c80a80, 0x191ea7c92c6, {0xc01e4696b6, 0xa, 0xa})
github.com/cockroachdb/cockroach/pkg/util/ulid/ulid.go:568 +0xda
github.com/cockroachdb/cockroach/pkg/util/ulid.New(0x191ea7c92c6, {0x7f331b49f3c0, 0xc010c80a80})
github.com/cockroachdb/cockroach/pkg/util/ulid/ulid.go:120 +0x1b0
github.com/cockroachdb/cockroach/pkg/util/ulid.MustNew(...)
github.com/cockroachdb/cockroach/pkg/util/ulid/ulid.go:131
github.com/cockroachdb/cockroach/pkg/sql/sem/builtins.init.func419({0x8070860?, 0xc0118ad4c0?}, 0xc005d22008, {0xc00d436c00?, 0x0?, 0xc005da3578?})
github.com/cockroachdb/cockroach/pkg/sql/sem/builtins/builtins.go:821 +0x55
github.com/cockroachdb/cockroach/pkg/sql/colexec.(*defaultBuiltinFuncOperator).Next.func1()
github.com/cockroachdb/cockroach/pkg/sql/colexec/builtin_funcs.go:77 +0x137
github.com/cockroachdb/cockroach/pkg/sql/colmem.(*Allocator).PerformOperation(0xc010c81280, {0xc005da3490, 0x1, 0xc?}, 0xc005da3440)
github.com/cockroachdb/cockroach/pkg/sql/colmem/allocator.go:460 +0x8d
github.com/cockroachdb/cockroach/pkg/sql/colexec.(*defaultBuiltinFuncOperator).Next(0xc0057a3cc0)
github.com/cockroachdb/cockroach/pkg/sql/colexec/builtin_funcs.go:54 +0x165
github.com/cockroachdb/cockroach/pkg/sql/colexec.(*isNullSelOp).Next(0xc00c587ef0)
github.com/cockroachdb/cockroach/bazel-out/k8-opt/bin/pkg/sql/colexec/is_null_ops.eg.go:218 +0x2c
github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecutils.(*BatchSchemaSubsetEnforcer).Next(0xc018a7e620)
github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecutils/operator.go:224 +0x28
github.com/cockroachdb/cockroach/pkg/sql/colexec.(*andProjOp).Next(0xc003e78c60)
github.com/cockroachdb/cockroach/bazel-out/k8-opt/bin/pkg/sql/colexec/and_or_projection.eg.go:194 +0x36
github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecsel.(*defaultCmpConstSelOp).Next(0xc005c09590)
github.com/cockroachdb/cockroach/bazel-out/k8-opt/bin/pkg/sql/colexec/colexecsel/default_cmp_sel_ops.eg.go:93 +0x3c
github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecbase.(*simpleProjectOp).Next(0xc0177af9e0)
github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecbase/simple_project.go:124 +0x33
github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecutils.(*BatchSchemaSubsetEnforcer).Next(0xc018a7e930)
github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecutils/operator.go:224 +0x28
github.com/cockroachdb/cockroach/pkg/sql/colexec.(*andProjOp).Next(0xc003e78e10)
github.com/cockroachdb/cockroach/bazel-out/k8-opt/bin/pkg/sql/colexec/and_or_projection.eg.go:194 +0x36
github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecbase.(*simpleProjectOp).Next(0xc0177afa40)
github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecbase/simple_project.go:124 +0x33
github.com/cockroachdb/cockroach/pkg/sql/colexec.(*UnorderedDistinct).Next(0xc005d341e0)
github.com/cockroachdb/cockroach/pkg/sql/colexec/unordered_distinct.go:100 +0x2f
github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecdisk.(*diskSpillerBase).Next.func1()
github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecdisk/disk_spiller.go:202 +0x29
github.com/cockroachdb/cockroach/pkg/sql/colexecerror.CatchVectorizedRuntimeError(0xc003e78e10?)
github.com/cockroachdb/cockroach/pkg/sql/colexecerror/error.go:135 +0x57
github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecdisk.(*diskSpillerBase).Next(0xc003e797a0)
github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecdisk/disk_spiller.go:200 +0x68
github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecutils.(*deselectorOp).Next(0xc0177afce0)
github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecutils/deselector.go:53 +0x32
github.com/cockroachdb/cockroach/pkg/sql/colflow/colrpc.(*Outbox).sendBatches.func1()
github.com/cockroachdb/cockroach/pkg/sql/colflow/colrpc/outbox.go:273 +0xc2
github.com/cockroachdb/cockroach/pkg/sql/colexecerror.CatchVectorizedRuntimeError(0x50?)
github.com/cockroachdb/cockroach/pkg/sql/colexecerror/error.go:135 +0x57
github.com/cockroachdb/cockroach/pkg/sql/colflow/colrpc.(*Outbox).sendBatches(0x29bfcc2?, {0x7fd7870?, 0xc00c1f8630?}, {0x7f3324985678?, 0xc00f29bc70?}, 0xc00c1f8630?, 0x2540be400?)
github.com/cockroachdb/cockroach/pkg/sql/colflow/colrpc/outbox.go:264 +0xc6
github.com/cockroachdb/cockroach/pkg/sql/colflow/colrpc.(*Outbox).runWithStream(0xc0051cef70, {0x7fd7870, 0xc00c1f8630}, {0x7f3324985678, 0xc00f29bc70}, 0xc00b0c2540, 0xc00f29bb40)
github.com/cockroachdb/cockroach/pkg/sql/colflow/colrpc/outbox.go:402 +0x185
github.com/cockroachdb/cockroach/pkg/sql/colflow/colrpc.(*Outbox).Run(0xc0051cef70, {0x7fd7870, 0xc00c5cca50}, {0x7f8f5e0, 0xc003e169d8}, 0x1, 0x9, 0xc00b0c2540, 0x2540be400)
github.com/cockroachdb/cockroach/pkg/sql/colflow/colrpc/outbox.go:225 +0x445
github.com/cockroachdb/cockroach/pkg/sql/colflow.(*vectorizedFlowCreator).setupRemoteOutputStream.func1({0x7fd7870?, 0xc00c5cca50?}, 0xc0023e2000?)
github.com/cockroachdb/cockroach/pkg/sql/colflow/vectorized_flow.go:772 +0x86
github.com/cockroachdb/cockroach/pkg/sql/colflow.(*vectorizedFlowCreator).setupRemoteOutputStream.(*vectorizedFlowCreator).accumulateAsyncComponent.func2.1()
github.com/cockroachdb/cockroach/pkg/sql/colflow/vectorized_flow.go:734 +0x5c
created by github.com/cockroachdb/cockroach/pkg/sql/colflow.(*vectorizedFlowCreator).setupRemoteOutputStream.(*vectorizedFlowCreator).accumulateAsyncComponent.func2 in goroutine 846499
github.com/cockroachdb/cockroach/pkg/sql/colflow/vectorized_flow.go:732 +0xb7
```
**Environment:**
- CockroachDB version: v24.1.4
- Server OS: `Linux a002 6.5.0-18-generic #18~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Feb 7 11:40:03 UTC 2 x86_64 x86_64 x86_64 GNU/Linux`
- Client app: postgresql odbc/psql
docker compose file:
```
version: '3.5'
services:
crdb1:
image: cockroachdb/cockroach:v24.1.4
command: "start --advertise-addr=crdb1:26357 --http-addr=crdb1:8080 --listen-addr=crdb1:26357 --sql-addr=crdb1:26257 --insecure --join=crdb1:26357,crdb2:26357,crdb3:26357"
volumes:
- "/cockroach/cockroach-data"
networks:
crnet1:
ipv4_address: 10.3.5.11
crdb2:
image: cockroachdb/cockroach:v24.1.4
command: "start --advertise-addr=crdb2:26357 --http-addr=crdb2:8080 --listen-addr=crdb2:26357 --sql-addr=crdb2:26257 --insecure --join=crdb1:26357,crdb2:26357,crdb3:26357"
volumes:
- "/cockroach/cockroach-data"
networks:
crnet1:
ipv4_address: 10.3.5.12
crdb3:
image: cockroachdb/cockroach:v24.1.4
command: "start --advertise-addr=crdb3:26357 --http-addr=crdb3:8080 --listen-addr=crdb3:26357 --sql-addr=crdb3:26257 --insecure --join=crdb1:26357,crdb2:26357,crdb3:26357"
volumes:
- "/cockroach/cockroach-data"
networks:
crnet1:
ipv4_address: 10.3.5.13
crdb_single:
image: cockroachdb/cockroach:v24.1.4
command: start-single-node --insecure
volumes:
- "/cockroach/cockroach-data"
networks:
crnet1:
ipv4_address: 10.3.5.21
networks:
crnet1:
driver: bridge
ipam:
config:
- subnet: 10.3.5.0/24
gateway: 10.3.5.254
```
#### about us
We are the BASS team from the School of Cyber Science and Technology at Beihang University. Our main focus is on system software security, operating systems, and program analysis research, as well as the development of automated program testing frameworks for detecting software defects. Using our self-developed database vulnerability testing tool, we have identified the above-mentioned possible vulnerabilities that may lead to database crashes.
Jira issue: CRDB-42154
Contributor guide
Assessment
This issue has not been assessed yet.