cockroachdb / cockroachdb/cockroach
Sentry: catch.go:24: runtime error: index out of range [0] with length 0 (1) while executing: SELECT st_removerepeatedpoints(_, _) Wraps: (2) assertion failure Wraps: (3) attached stack trace -- sta...
- 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/7695156693/?referrer=webhooks_plugin](https://cockroach-labs.sentry.io/issues/7695156693/?referrer=webhooks_plugin)
Panic Message:
```
catch.go:24: runtime error: index out of range [0] with length 0
(1) while executing: SELECT st_removerepeatedpoints(_, _)
Wraps: (2) assertion failure
Wraps: (3) attached stack trace
-- stack trace:
| github.com/cockroachdb/cockroach/pkg/util/errorutil.shouldCatch
| pkg/util/errorutil/catch.go:24
| github.com/cockroachdb/cockroach/pkg/util/errorutil.MaybeCatchPanic
| pkg/util/errorutil/catch.go:38
| runtime.gopanic
| GOROOT/src/runtime/panic.go:783
| runtime.goPanicIndex
| GOROOT/src/runtime/panic.go:115
| github.com/twpayne/go-geom.Coord.X
| external/com_github_twpayne_go_geom/geom.go:82
| github.com/cockroachdb/cockroach/pkg/geo/geomfn.coordSub
| pkg/geo/geomfn/coord.go:21
| github.com/cockroachdb/cockroach/pkg/geo/geomfn.removeRepeatedCoords
| pkg/geo/geomfn/remove_repeated_points.go:78
| github.com/cockroachdb/cockroach/pkg/geo/geomfn.removeRepeatedPointsFromGeomT
| pkg/geo/geomfn/remove_repeated_points.go:40
| github.com/cockroachdb/cockroach/pkg/geo/geomfn.RemoveRepeatedPoints
| pkg/geo/geomfn/remove_repeated_points.go:21
| github.com/cockroachdb/cockroach/pkg/sql/sem/builtins.init.func659
| pkg/sql/sem/builtins/geo_builtins.go:5418
| github.com/cockroachdb/cockroach/pkg/sql/sem/eval.(*evaluator).EvalFuncExpr
| pkg/sql/sem/eval/expr.go:502
| github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FuncExpr).Eval
| bazel-out/k8-opt/bin/pkg/sql/sem/tree/eval_expr_generated.go:291
| github.com/cockroachdb/cockroach/pkg/sql/sem/eval.Expr
| pkg/sql/sem/eval/expr.go:22
| github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*CustomFuncs).FoldFunction
| pkg/sql/opt/norm/fold_constants_funcs.go:729
| github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructFunction
| bazel-out/k8-opt/bin/pkg/sql/opt/norm/factory.og.go:22280
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildFunction
| pkg/sql/opt/optbuilder/scalar.go:574
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildScalar
| pkg/sql/opt/optbuilder/scalar.go:331
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildProjectionList
| pkg/sql/opt/optbuilder/project.go:203
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildSelectClause
| pkg/sql/opt/optbuilder/select.go:1317
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildSelectStmtWithoutParens
| pkg/sql/opt/optbuilder/select.go:1210
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildSelect.func1
| pkg/sql/opt/optbuilder/select.go:1162
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).processWiths
| pkg/sql/opt/optbuilder/with.go:110
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildSelect
| pkg/sql/opt/optbuilder/select.go:1161
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildStmt
| pkg/sql/opt/optbuilder/builder.go:396
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildStmtAtRootWithScope
| pkg/sql/opt/optbuilder/builder.go:337
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildStmtAtRoot
| pkg/sql/opt/optbuilder/builder.go:313
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).Build
| pkg/sql/opt/optbuilder/builder.go:292
| github.com/cockroachdb/cockroach/pkg/sql.(*optPlanningCtx).buildExecMemo
| pkg/sql/plan_opt.go:1003
| github.com/cockroachdb/cockroach/pkg/sql.(*planner).makeOptimizerPlanInternal
| pkg/sql/plan_opt.go:348
| github.com/cockroachdb/cockroach/pkg/sql.(*planner).makeOptimizerPlan
| pkg/sql/plan_opt.go:328
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).makeExecPlan
| pkg/sql/conn_executor_exec.go:3509
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).dispatchToExecutionEngine
| pkg/sql/conn_executor_exec.go:3079
Wraps: (4) runtime error: index out of range [0] with length 0
| -- cause hidden behind barrier
| runtime error: index out of range [0] with length 0
| (1) runtime error: index out of range [0] with length 0
| Error types: (1) runtime.boundsError
Error types: (1) *safedetails.withSafeDetails (2) *assert.withAssertionFailure (3) *withstack.withStack (4) *barriers.barrierErr
-- report composition:
*barriers.barrierErr: masked error: runtime error: index out of range [0] with length 0
catch.go:24: *withstack.withStack (top exception)
*assert.withAssertionFailure
*safedetails.withSafeDetails: while executing: SELECT st_removerepeatedpoints(_, _)
```
Stacktrace (expand for inline code snippets):
[pkg/sql/conn_executor_exec.go#L3078-L3080](pkg/sql/conn_executor_exec.go#L3078-L3080)
[pkg/sql/conn_executor_exec.go#L3508-L3510](pkg/sql/conn_executor_exec.go#L3508-L3510)
[pkg/sql/plan_opt.go#L327-L329](pkg/sql/plan_opt.go#L327-L329)
[pkg/sql/plan_opt.go#L347-L349](pkg/sql/plan_opt.go#L347-L349)
[pkg/sql/plan_opt.go#L1002-L1004](pkg/sql/plan_opt.go#L1002-L1004)
[pkg/sql/opt/optbuilder/builder.go#L291-L293](pkg/sql/opt/optbuilder/builder.go#L291-L293)
[pkg/sql/opt/optbuilder/builder.go#L312-L314](pkg/sql/opt/optbuilder/builder.go#L312-L314)
[pkg/sql/opt/optbuilder/builder.go#L336-L338](pkg/sql/opt/optbuilder/builder.go#L336-L338)
[pkg/sql/opt/optbuilder/builder.go#L395-L397](pkg/sql/opt/optbuilder/builder.go#L395-L397)
[pkg/sql/opt/optbuilder/select.go#L1160-L1162](pkg/sql/opt/optbuilder/select.go#L1160-L1162)
[pkg/sql/opt/optbuilder/with.go#L109-L111](pkg/sql/opt/optbuilder/with.go#L109-L111)
[pkg/sql/opt/optbuilder/select.go#L1161-L1163](pkg/sql/opt/optbuilder/select.go#L1161-L1163)
[pkg/sql/opt/optbuilder/select.go#L1209-L1211](pkg/sql/opt/optbuilder/select.go#L1209-L1211)
[pkg/sql/opt/optbuilder/select.go#L1316-L1318](pkg/sql/opt/optbuilder/select.go#L1316-L1318)
[pkg/sql/opt/optbuilder/project.go#L202-L204](pkg/sql/opt/optbuilder/project.go#L202-L204)
[pkg/sql/opt/optbuilder/scalar.go#L330-L332](pkg/sql/opt/optbuilder/scalar.go#L330-L332)
[pkg/sql/opt/optbuilder/scalar.go#L573-L575](pkg/sql/opt/optbuilder/scalar.go#L573-L575)
[bazel-out/k8-opt/bin/pkg/sql/opt/norm/factory.og.go#L22279-L22281](bazel-out/k8-opt/bin/pkg/sql/opt/norm/factory.og.go#L22279-L22281)
[pkg/sql/opt/norm/fold_constants_funcs.go#L728-L730](pkg/sql/opt/norm/fold_constants_funcs.go#L728-L730)
[pkg/sql/sem/eval/expr.go#L21-L23](pkg/sql/sem/eval/expr.go#L21-L23)
[bazel-out/k8-opt/bin/pkg/sql/sem/tree/eval_expr_generated.go#L290-L292](bazel-out/k8-opt/bin/pkg/sql/sem/tree/eval_expr_generated.go#L290-L292)
[pkg/sql/sem/eval/expr.go#L501-L503](pkg/sql/sem/eval/expr.go#L501-L503)
[pkg/sql/sem/builtins/geo_builtins.go#L5417-L5419](pkg/sql/sem/builtins/geo_builtins.go#L5417-L5419)
[pkg/geo/geomfn/remove_repeated_points.go#L20-L22](pkg/geo/geomfn/remove_repeated_points.go#L20-L22)
[pkg/geo/geomfn/remove_repeated_points.go#L39-L41](pkg/geo/geomfn/remove_repeated_points.go#L39-L41)
[pkg/geo/geomfn/remove_repeated_points.go#L77-L79](pkg/geo/geomfn/remove_repeated_points.go#L77-L79)
[pkg/geo/geomfn/coord.go#L20-L22](pkg/geo/geomfn/coord.go#L20-L22)
[external/com_github_twpayne_go_geom/geom.go#L81-L83](external/com_github_twpayne_go_geom/geom.go#L81-L83)
[GOROOT/src/runtime/panic.go#L114-L116](GOROOT/src/runtime/panic.go#L114-L116)
[GOROOT/src/runtime/panic.go#L782-L784](GOROOT/src/runtime/panic.go#L782-L784)
[pkg/util/errorutil/catch.go#L37-L39](pkg/util/errorutil/catch.go#L37-L39)
[pkg/util/errorutil/catch.go#L23-L25](pkg/util/errorutil/catch.go#L23-L25)
```
pkg/sql/conn_executor_exec.go in pkg/sql.(*connExecutor).dispatchToExecutionEngine at line 3079
pkg/sql/conn_executor_exec.go in pkg/sql.(*connExecutor).makeExecPlan at line 3509
pkg/sql/plan_opt.go in pkg/sql.(*planner).makeOptimizerPlan at line 328
pkg/sql/plan_opt.go in pkg/sql.(*planner).makeOptimizerPlanInternal at line 348
pkg/sql/plan_opt.go in pkg/sql.(*optPlanningCtx).buildExecMemo at line 1003
pkg/sql/opt/optbuilder/builder.go in pkg/sql/opt/optbuilder.(*Builder).Build at line 292
pkg/sql/opt/optbuilder/builder.go in pkg/sql/opt/optbuilder.(*Builder).buildStmtAtRoot at line 313
pkg/sql/opt/optbuilder/builder.go in pkg/sql/opt/optbuilder.(*Builder).buildStmtAtRootWithScope at line 337
pkg/sql/opt/optbuilder/builder.go in pkg/sql/opt/optbuilder.(*Builder).buildStmt at line 396
pkg/sql/opt/optbuilder/select.go in pkg/sql/opt/optbuilder.(*Builder).buildSelect at line 1161
pkg/sql/opt/optbuilder/with.go in pkg/sql/opt/optbuilder.(*Builder).processWiths at line 110
pkg/sql/opt/optbuilder/select.go in pkg/sql/opt/optbuilder.(*Builder).buildSelect.func1 at line 1162
pkg/sql/opt/optbuilder/select.go in pkg/sql/opt/optbuilder.(*Builder).buildSelectStmtWithoutParens at line 1210
pkg/sql/opt/optbuilder/select.go in pkg/sql/opt/optbuilder.(*Builder).buildSelectClause at line 1317
pkg/sql/opt/optbuilder/project.go in pkg/sql/opt/optbuilder.(*Builder).buildProjectionList at line 203
pkg/sql/opt/optbuilder/scalar.go in pkg/sql/opt/optbuilder.(*Builder).buildScalar at line 331
pkg/sql/opt/optbuilder/scalar.go in pkg/sql/opt/optbuilder.(*Builder).buildFunction at line 574
bazel-out/k8-opt/bin/pkg/sql/opt/norm/factory.og.go in pkg/sql/opt/norm.(*Factory).ConstructFunction at line 22280
pkg/sql/opt/norm/fold_constants_funcs.go in pkg/sql/opt/norm.(*CustomFuncs).FoldFunction at line 729
pkg/sql/sem/eval/expr.go in pkg/sql/sem/eval.Expr at line 22
bazel-out/k8-opt/bin/pkg/sql/sem/tree/eval_expr_generated.go in pkg/sql/sem/tree.(*FuncExpr).Eval at line 291
pkg/sql/sem/eval/expr.go in pkg/sql/sem/eval.(*evaluator).EvalFuncExpr at line 502
pkg/sql/sem/builtins/geo_builtins.go in pkg/sql/sem/builtins.init.func659 at line 5418
pkg/geo/geomfn/remove_repeated_points.go in pkg/geo/geomfn.RemoveRepeatedPoints at line 21
pkg/geo/geomfn/remove_repeated_points.go in pkg/geo/geomfn.removeRepeatedPointsFromGeomT at line 40
pkg/geo/geomfn/remove_repeated_points.go in pkg/geo/geomfn.removeRepeatedCoords at line 78
pkg/geo/geomfn/coord.go in pkg/geo/geomfn.coordSub at line 21
external/com_github_twpayne_go_geom/geom.go in github.com/twpayne/go-geom.Coord.X at line 82
GOROOT/src/runtime/panic.go in runtime.goPanicIndex at line 115
GOROOT/src/runtime/panic.go in runtime.gopanic at line 783
pkg/util/errorutil/catch.go in pkg/util/errorutil.MaybeCatchPanic at line 38
pkg/util/errorutil/catch.go in pkg/util/errorutil.shouldCatch at line 24
```
### Tags
| Tag | Value |
| --- | --- |
| Command | start-single-node |
| Environment | v26.2.1 |
| Go Version | go1.25.5 |
| Platform | darwin arm64 |
| Distribution | CCL |
| Cockroach Release | v26.2.1 |
| Cockroach SHA | b398a6e1fde74a915daf8e9841303c8ee39c2abe |
| # of CPUs | 16 |
| # of Goroutines | 602 |
Jira issue: CRDB-67404
Contributor guide
Research direction
Start with pkg/geo/geomfn/remove_repeated_points.go and pkg/geo/geomfn/coord.go, following the stack trace through RemoveRepeatedPoints and coordSub. Reproduce the SELECT st_removerepeatedpoints(_, _) failure from the Sentry report, then add regression coverage showing that the reported input no longer panics and the function returns the expected result.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, sql
- Domain
- databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 42/100