Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sentry: catch.go:29: runtime error: index out of range [0] with length 0 (1) Wraps: (2) Wraps: (3) assertion failure Wraps: (4) attached stack trace -- stack trace: | github.com/cockroachdb/cockro... #120151

Closed
cockroach-sentry opened this issue Mar 8, 2024 · 1 comment
Labels
O-sentry Originated from an in-the-wild panic report.

Comments

@cockroach-sentry
Copy link
Collaborator

cockroach-sentry commented Mar 8, 2024

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/5048268387/?referrer=webhooks_plugin

Panic Message:

catch.go:29: runtime error: index out of range [0] with length 0
(1)
Wraps: (2)
Wraps: (3) assertion failure
Wraps: (4) attached stack trace
  -- stack trace:
  | github.com/cockroachdb/cockroach/pkg/util/errorutil.ShouldCatch
  | 	github.com/cockroachdb/cockroach/pkg/util/errorutil/catch.go:29
  | github.com/cockroachdb/cockroach/pkg/sql/opt/exec/explain.getResultColumns.func1
  | 	github.com/cockroachdb/cockroach/pkg/sql/opt/exec/explain/result_columns.go:33
  | runtime.gopanic
  | 	GOROOT/src/runtime/panic.go:890
  | runtime.goPanicIndex
  | 	GOROOT/src/runtime/panic.go:113
  | github.com/cockroachdb/cockroach/pkg/sql/opt/exec/explain.groupByColumns
  | 	github.com/cockroachdb/cockroach/pkg/sql/opt/exec/explain/result_columns.go:261
  | github.com/cockroachdb/cockroach/pkg/sql/opt/exec/explain.getResultColumns
  | 	github.com/cockroachdb/cockroach/pkg/sql/opt/exec/explain/result_columns.go:99
  | github.com/cockroachdb/cockroach/pkg/sql/opt/exec/explain.newNode
  | 	github.com/cockroachdb/cockroach/pkg/sql/opt/exec/explain/explain_factory.go:96
  | github.com/cockroachdb/cockroach/pkg/sql/opt/exec/explain.(*PlanGistFactory).decodeOperatorBody
  | 	github.com/cockroachdb/cockroach/bazel-out/k8-opt/bin/pkg/sql/opt/exec/explain/plan_gist_factory.og.go:1193
  | github.com/cockroachdb/cockroach/pkg/sql/opt/exec/explain.(*PlanGistFactory).decodeOp
  | 	github.com/cockroachdb/cockroach/pkg/sql/opt/exec/explain/plan_gist_factory.go:240
  | github.com/cockroachdb/cockroach/pkg/sql/opt/exec/explain.DecodePlanGistToPlan
  | 	github.com/cockroachdb/cockroach/pkg/sql/opt/exec/explain/plan_gist_factory.go:213
  | github.com/cockroachdb/cockroach/pkg/sql/opt/exec/explain.DecodePlanGistToRows
  | 	github.com/cockroachdb/cockroach/pkg/sql/opt/exec/explain/plan_gist_factory.go:181
  | github.com/cockroachdb/cockroach/pkg/sql.(*planner).DecodeGist
  | 	github.com/cockroachdb/cockroach/pkg/sql/plan_opt.go:728
  | github.com/cockroachdb/cockroach/pkg/sql/sem/builtins.(*gistPlanGenerator).Start
  | 	github.com/cockroachdb/cockroach/pkg/sql/sem/builtins/generator_builtins.go:630
  | github.com/cockroachdb/cockroach/pkg/sql/rowexec.(*projectSetProcessor).nextInputRow
  | 	github.com/cockroachdb/cockroach/pkg/sql/rowexec/project_set.go:209
  | github.com/cockroachdb/cockroach/pkg/sql/rowexec.(*projectSetProcessor).Next
  | 	github.com/cockroachdb/cockroach/pkg/sql/rowexec/project_set.go:291
  | github.com/cockroachdb/cockroach/pkg/sql/colexec.(*Columnarizer).Next
  | 	github.com/cockroachdb/cockroach/pkg/sql/colexec/columnarizer.go:239
  | github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecutils.(*vectorTypeEnforcer).Next
  | 	github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecutils/operator.go:157
  | github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecbase.constBytesOp.Next
  | 	github.com/cockroachdb/cockroach/bazel-out/k8-opt/bin/pkg/sql/colexec/colexecbase/const.eg.go:213
  | github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecbase.(*simpleProjectOp).Next
  | 	github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecbase/simple_project.go:124
  | github.com/cockroachdb/cockroach/pkg/sql/colflow.(*batchInfoCollector).next
  | 	github.com/cockroachdb/cockroach/pkg/sql/colflow/stats.go:118
  | github.com/cockroachdb/cockroach/pkg/sql/colexecerror.CatchVectorizedRuntimeError
  | 	github.com/cockroachdb/cockroach/pkg/sql/colexecerror/error.go:92
  | github.com/cockroachdb/cockroach/pkg/sql/colflow.(*batchInfoCollector).Next
  | 	github.com/cockroachdb/cockroach/pkg/sql/colflow/stats.go:126
  | github.com/cockroachdb/cockroach/pkg/sql/colexec.(*Materializer).next
  | 	github.com/cockroachdb/cockroach/pkg/sql/colexec/materializer.go:247
  | github.com/cockroachdb/cockroach/pkg/sql/colexec.(*Materializer).nextAdapter
  | 	github.com/cockroachdb/cockroach/pkg/sql/colexec/materializer.go:272
  | github.com/cockroachdb/cockroach/pkg/sql/colexecerror.CatchVectorizedRuntimeError
  | 	github.com/cockroachdb/cockroach/pkg/sql/colexecerror/error.go:92
  | github.com/cockroachdb/cockroach/pkg/sql/colexec.(*Materializer).Next
  | 	github.com/cockroachdb/cockroach/pkg/sql/colexec/materializer.go:278
  | github.com/cockroachdb/cockroach/pkg/sql/rowexec.(*inputStatCollector).Next
  | 	github.com/cockroachdb/cockroach/pkg/sql/rowexec/stats.go:69
  | github.com/cockroachdb/cockroach/pkg/sql/rowexec.(*windower).accumulateRows
  | 	github.com/cockroachdb/cockroach/pkg/sql/rowexec/windower.go:271
  | github.com/cockroachdb/cockroach/pkg/sql/rowexec.(*windower).Next
  | 	github.com/cockroachdb/cockroach/pkg/sql/rowexec/windower.go:223
  | github.com/cockroachdb/cockroach/pkg/sql/colexec.(*Columnarizer).Next
  | 	github.com/cockroachdb/cockroach/pkg/sql/colexec/columnarizer.go:239
  | github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecutils.(*vectorTypeEnforcer).Next
  | 	github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecutils/operator.go:157
  | github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecbase.(*castBytesStringOp).Next
  | 	github.com/cockroachdb/cockroach/bazel-out/k8-opt/bin/pkg/sql/colexec/colexecbase/cast.eg.go:2274
Wraps: (5) 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) *colexecerror.notInternalError (2) *colexecerror.notInternalError (3) *assert.withAssertionFailure (4) *withstack.withStack (5) *barriers.barrierErr
-- report composition:
*barriers.barrierErr: masked error: runtime error: index out of range [0] with length 0
catch.go:29: *withstack.withStack (top exception)
*assert.withAssertionFailure
*colexecerror.notInternalError
*colexecerror.notInternalError
Stacktrace (expand for inline code snippets):

https://github.com/cockroachdb/cockroach/blob/8d065df26e25a762a1abbbf2b1e475456b341a00/bazel-out/k8-opt/bin/pkg/sql/colexec/colexecbase/cast.eg.go#L2273-L2275

func (e *vectorTypeEnforcer) Next() coldata.Batch {
b := e.Input.Next()
if b.Length() == 0 {

for batchDone := false; !batchDone; {
row, meta := c.input.Next()
if meta != nil {

case windowerAccumulating:
w.runningState, row, meta = w.accumulateRows()
case windowerEmittingRows:

for {
row, meta := w.input.Next()
if meta != nil {

start := timeutil.Now()
row, meta := isc.RowSource.Next()
if row != nil {

for m.State == execinfra.StateRunning {
if err := colexecerror.CatchVectorizedRuntimeError(m.nextAdapter); err != nil {
m.MoveToDraining(err)

}()
operation()
return retErr

func (m *Materializer) nextAdapter() {
m.outputRow = m.next()
}

// Get a fresh batch.
m.batch = m.input.Next()
if m.batch.Length() == 0 {

// execution time (e.g. in the statement bundle).
err := colexecerror.CatchVectorizedRuntimeError(bic.next)
bic.stopwatch.Stop()

}()
operation()
return retErr

func (bic *batchInfoCollector) next() {
bic.batch = bic.Input.Next()
}

func (d *simpleProjectOp) Next() coldata.Batch {
batch := d.Input.Next()
if batch.Length() == 0 {

https://github.com/cockroachdb/cockroach/blob/8d065df26e25a762a1abbbf2b1e475456b341a00/bazel-out/k8-opt/bin/pkg/sql/colexec/colexecbase/const.eg.go#L212-L214
func (e *vectorTypeEnforcer) Next() coldata.Batch {
b := e.Input.Next()
if b.Length() == 0 {

for batchDone := false; !batchDone; {
row, meta := c.input.Next()
if meta != nil {

// Read the row from the source.
row, meta, err := ps.nextInputRow()
if meta != nil {

ps.gens[i] = gen
if err := gen.Start(ps.Ctx(), ps.FlowCtx.Txn); err != nil {
return nil, nil, err

func (g *gistPlanGenerator) Start(_ context.Context, _ *kv.Txn) error {
rows, err := g.evalCtx.Planner.DecodeGist(g.gist, g.external)
if err != nil {

}
return explain.DecodePlanGistToRows(gist, cat)
}

ob := NewOutputBuilder(flags)
explainPlan, err := DecodePlanGistToPlan(gist, catalog)
if err != nil {

for {
op := f.decodeOp()
if op == unknownOp {

}
n, err := f.decodeOperatorBody(execOperator(val))
if err != nil {

https://github.com/cockroachdb/cockroach/blob/8d065df26e25a762a1abbbf2b1e475456b341a00/bazel-out/k8-opt/bin/pkg/sql/opt/exec/explain/plan_gist_factory.og.go#L1192-L1194
}
columns, err := getResultColumns(op, args, inputNodeCols...)
if err != nil {

a := args.(*groupByArgs)
return groupByColumns(inputs[0], a.GroupCols, a.Aggregations), nil

for _, col := range groupCols {
columns = append(columns, inputCols[col])
}

GOROOT/src/runtime/panic.go#L112-L114
GOROOT/src/runtime/panic.go#L889-L891
// (like out-of-bounds). Catch these here and return as an error.
if ok, e := errorutil.ShouldCatch(r); ok {
err = e

// get reported to Sentry.
err = errors.HandleAsAssertionFailure(err)
}

bazel-out/k8-opt/bin/pkg/sql/colexec/colexecbase/cast.eg.go in pkg/sql/colexec/colexecbase.(*castBytesStringOp).Next at line 2274
pkg/sql/colexec/colexecutils/operator.go in pkg/sql/colexec/colexecutils.(*vectorTypeEnforcer).Next at line 157
pkg/sql/colexec/columnarizer.go in pkg/sql/colexec.(*Columnarizer).Next at line 239
pkg/sql/rowexec/windower.go in pkg/sql/rowexec.(*windower).Next at line 223
pkg/sql/rowexec/windower.go in pkg/sql/rowexec.(*windower).accumulateRows at line 271
pkg/sql/rowexec/stats.go in pkg/sql/rowexec.(*inputStatCollector).Next at line 69
pkg/sql/colexec/materializer.go in pkg/sql/colexec.(*Materializer).Next at line 278
pkg/sql/colexecerror/error.go in pkg/sql/colexecerror.CatchVectorizedRuntimeError at line 92
pkg/sql/colexec/materializer.go in pkg/sql/colexec.(*Materializer).nextAdapter at line 272
pkg/sql/colexec/materializer.go in pkg/sql/colexec.(*Materializer).next at line 247
pkg/sql/colflow/stats.go in pkg/sql/colflow.(*batchInfoCollector).Next at line 126
pkg/sql/colexecerror/error.go in pkg/sql/colexecerror.CatchVectorizedRuntimeError at line 92
pkg/sql/colflow/stats.go in pkg/sql/colflow.(*batchInfoCollector).next at line 118
pkg/sql/colexec/colexecbase/simple_project.go in pkg/sql/colexec/colexecbase.(*simpleProjectOp).Next at line 124
bazel-out/k8-opt/bin/pkg/sql/colexec/colexecbase/const.eg.go in pkg/sql/colexec/colexecbase.constBytesOp.Next at line 213
pkg/sql/colexec/colexecutils/operator.go in pkg/sql/colexec/colexecutils.(*vectorTypeEnforcer).Next at line 157
pkg/sql/colexec/columnarizer.go in pkg/sql/colexec.(*Columnarizer).Next at line 239
pkg/sql/rowexec/project_set.go in pkg/sql/rowexec.(*projectSetProcessor).Next at line 291
pkg/sql/rowexec/project_set.go in pkg/sql/rowexec.(*projectSetProcessor).nextInputRow at line 209
pkg/sql/sem/builtins/generator_builtins.go in pkg/sql/sem/builtins.(*gistPlanGenerator).Start at line 630
pkg/sql/plan_opt.go in pkg/sql.(*planner).DecodeGist at line 728
pkg/sql/opt/exec/explain/plan_gist_factory.go in pkg/sql/opt/exec/explain.DecodePlanGistToRows at line 181
pkg/sql/opt/exec/explain/plan_gist_factory.go in pkg/sql/opt/exec/explain.DecodePlanGistToPlan at line 213
pkg/sql/opt/exec/explain/plan_gist_factory.go in pkg/sql/opt/exec/explain.(*PlanGistFactory).decodeOp at line 240
bazel-out/k8-opt/bin/pkg/sql/opt/exec/explain/plan_gist_factory.og.go in pkg/sql/opt/exec/explain.(*PlanGistFactory).decodeOperatorBody at line 1193
pkg/sql/opt/exec/explain/explain_factory.go in pkg/sql/opt/exec/explain.newNode at line 96
pkg/sql/opt/exec/explain/result_columns.go in pkg/sql/opt/exec/explain.getResultColumns at line 99
pkg/sql/opt/exec/explain/result_columns.go in pkg/sql/opt/exec/explain.groupByColumns at line 261
GOROOT/src/runtime/panic.go in runtime.goPanicIndex at line 113
GOROOT/src/runtime/panic.go in runtime.gopanic at line 890
pkg/sql/opt/exec/explain/result_columns.go in pkg/sql/opt/exec/explain.getResultColumns.func1 at line 33
pkg/util/errorutil/catch.go in pkg/util/errorutil.ShouldCatch at line 29

Tags

Tag Value
Command server
Environment v23.1.13
Go Version go1.19.13
Platform linux arm64
Distribution CCL
Cockroach Release v23.1.13
Cockroach SHA 8d065df
# of CPUs 16
# of Goroutines 2635

Jira issue: CRDB-36510

@cockroach-sentry cockroach-sentry added O-sentry Originated from an in-the-wild panic report. C-bug Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior. labels Mar 8, 2024
@exalate-issue-sync exalate-issue-sync bot changed the title Sentry: catch.go:29: runtime error: index out of range [0] with length 0 (1) Wraps: (2) Wraps: (3) assertion failure Wraps: (4) attached stack trace -- stack trace: | github.com/cockroachdb/cockro... Sentry: catch.go:29: runtime error: index out of range [0] with length 0 (1) Wraps: (2) Wraps: (3) assertion failure Wraps: (4) attached stack trace -- stack trace: | github.com/cockroachdb/cockro... Mar 8, 2024
@exalate-issue-sync exalate-issue-sync bot removed the C-bug Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior. label Mar 8, 2024
@yuzefovich
Copy link
Member

fixed later

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
O-sentry Originated from an in-the-wild panic report.
Projects
None yet
Development

No branches or pull requests

2 participants