cockroachdb / cockroach

CockroachDB — the cloud native, distributed SQL database designed for high availability, effortless scale, and control over data placement.
https://www.cockroachlabs.com
Other
29.96k stars 3.79k forks source link

sql: CockroachDB panics when executing query #131158

Open SteveLeungYL opened 1 week ago

SteveLeungYL commented 1 week ago

Describe the problem

The latest version of the CockroachDB v24.2.0 encounters crash when executing the following query:

SET LOCAL SCHEMA string_agg ( '1', 'random_text' );

To Reproduce

  1. In operating system Ubuntu 20.04 LTS, download the pre-build CockroachDB binaries (v24.2.0) from link
  2. Run ./cockroach demo, and then paste the PoC query to the cockroach cli environment.
  3. Observe the crash and log the stack information.

Expected behavior The CockroachDB should return error from the statement.

Additional data / screenshots

This is the stack frame from the crash (v24.2.0):

*
* ERROR: a SQL panic has occurred while executing the following statement:
* SET LOCAL search_path = string_agg('1', 'random_text')
*
*
* ERROR: a panic has occurred!
* interface conversion: tree.FnOverload is nil, not func(context.Context, *eval.Context, tree.Datums) (tree.Datum, error)
* (1) attached stack trace
*   -- stack trace:
*   | github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn.func1
*   |   github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:961
*   | [...repeated from below...]
* Wraps: (2) while executing: SET LOCAL search_path = string_agg(_, _)
* Wraps: (3) attached stack trace
*   -- stack trace:
*   | github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn.func1
*   |   github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:961
*   | runtime.gopanic
*   |   GOROOT/src/runtime/panic.go:770
*   | github.com/cockroachdb/cockroach/pkg/sql/colexecerror.CatchVectorizedRuntimeError.func1
*   |   github.com/cockroachdb/cockroach/pkg/sql/colexecerror/error.go:127
*   | runtime.gopanic
*   |   GOROOT/src/runtime/panic.go:770
*   | github.com/cockroachdb/cockroach/pkg/sql/colexecerror.CatchVectorizedRuntimeError.func1
*   |   github.com/cockroachdb/cockroach/pkg/sql/colexecerror/error.go:127
*   | runtime.gopanic
*   |   GOROOT/src/runtime/panic.go:770
*   | runtime.panicdottypeE
*   |   GOROOT/src/runtime/iface.go:262
*   | github.com/cockroachdb/cockroach/pkg/sql/sem/eval.(*evaluator).EvalFuncExpr
*   |   github.com/cockroachdb/cockroach/pkg/sql/sem/eval/expr.go:483
*   | github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FuncExpr).Eval
*   |   github.com/cockroachdb/cockroach/bazel-out/k8-fastbuild/bin/pkg/sql/sem/tree/eval_expr_generated.go:287
*   | github.com/cockroachdb/cockroach/pkg/sql/sem/eval.Expr
*   |   github.com/cockroachdb/cockroach/pkg/sql/sem/eval/expr.go:26
*   | github.com/cockroachdb/cockroach/pkg/sql.(*setVarNode).startExec
*   |   github.com/cockroachdb/cockroach/pkg/sql/set_var.go:134
*   | github.com/cockroachdb/cockroach/pkg/sql.startExec.func2
*   |   github.com/cockroachdb/cockroach/pkg/sql/plan.go:524
*   | github.com/cockroachdb/cockroach/pkg/sql.(*planVisitor).visitInternal.func1
*   |   github.com/cockroachdb/cockroach/pkg/sql/walk.go:112
*   | github.com/cockroachdb/cockroach/pkg/sql.(*planVisitor).visitInternal
*   |   github.com/cockroachdb/cockroach/pkg/sql/walk.go:299
*   | github.com/cockroachdb/cockroach/pkg/sql.(*planVisitor).visit
*   |   github.com/cockroachdb/cockroach/pkg/sql/walk.go:79
*   | github.com/cockroachdb/cockroach/pkg/sql.walkPlan
*   |   github.com/cockroachdb/cockroach/pkg/sql/walk.go:43
*   | github.com/cockroachdb/cockroach/pkg/sql.startExec
*   |   github.com/cockroachdb/cockroach/pkg/sql/plan.go:527
*   | github.com/cockroachdb/cockroach/pkg/sql.(*planNodeToRowSource).Start
*   |   github.com/cockroachdb/cockroach/pkg/sql/plan_node_to_row_source.go:171
*   | github.com/cockroachdb/cockroach/pkg/sql/colexec.(*Columnarizer).Init
*   |   github.com/cockroachdb/cockroach/pkg/sql/colexec/columnarizer.go:183
*   | github.com/cockroachdb/cockroach/pkg/sql/colflow.(*batchInfoCollector).init
*   |   github.com/cockroachdb/cockroach/pkg/sql/colflow/stats.go:94
*   | github.com/cockroachdb/cockroach/pkg/sql/colexecerror.CatchVectorizedRuntimeError
*   |   github.com/cockroachdb/cockroach/pkg/sql/colexecerror/error.go:152
*   | github.com/cockroachdb/cockroach/pkg/sql/colflow.(*batchInfoCollector).Init
*   |   github.com/cockroachdb/cockroach/pkg/sql/colflow/stats.go:103
*   | github.com/cockroachdb/cockroach/pkg/sql/colflow.(*BatchFlowCoordinator).init.func1
*   |   github.com/cockroachdb/cockroach/pkg/sql/colflow/flow_coordinator.go:241
*   | github.com/cockroachdb/cockroach/pkg/sql/colexecerror.CatchVectorizedRuntimeError
*   |   github.com/cockroachdb/cockroach/pkg/sql/colexecerror/error.go:152
*   | github.com/cockroachdb/cockroach/pkg/sql/colflow.(*BatchFlowCoordinator).init
*   |   github.com/cockroachdb/cockroach/pkg/sql/colflow/flow_coordinator.go:240
*   | github.com/cockroachdb/cockroach/pkg/sql/colflow.(*BatchFlowCoordinator).Run
*   |   github.com/cockroachdb/cockroach/pkg/sql/colflow/flow_coordinator.go:274
*   | github.com/cockroachdb/cockroach/pkg/sql/colflow.(*vectorizedFlow).Run
*   |   github.com/cockroachdb/cockroach/pkg/sql/colflow/vectorized_flow.go:320
*   | github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).Run
*   |   github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:932
*   | github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).PlanAndRun
*   |   github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:1994
*   | github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).PlanAndRunAll.func3
*   |   github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:1708
*   | github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).PlanAndRunAll
*   |   github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:1711
*   | github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execWithDistSQLEngine
*   |   github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:2420
* Wraps: (4) interface conversion: tree.FnOverload is nil, not func(context.Context, *eval.Context, tree.Datums) (tree.Datum, error)
* Error types: (1) *withstack.withStack (2) *safedetails.withSafeDetails (3) *withstack.withStack (4) *runtime.TypeAssertionError
*
panic: interface conversion: tree.FnOverload is nil, not func(context.Context, *eval.Context, tree.Datums) (tree.Datum, error) [recovered]
    panic: interface conversion: tree.FnOverload is nil, not func(context.Context, *eval.Context, tree.Datums) (tree.Datum, error) [recovered]
    panic: interface conversion: tree.FnOverload is nil, not func(context.Context, *eval.Context, tree.Datums) (tree.Datum, error) [recovered]
    panic: interface conversion: tree.FnOverload is nil, not func(context.Context, *eval.Context, tree.Datums) (tree.Datum, error)

goroutine 5120 [running]:
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).closeWrapper(0xc006038a08, {0x8290430, 0xc00602f470}, {0x63b6980?, 0xc0062cca50?})
    github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1234 +0x316
github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn.func1({0x8290430, 0xc00602f470}, {0xc0077c1bf0?})
    github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:961 +0x52
panic({0x63b6980?, 0xc0062cca50?})
    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:127 +0x6e5
panic({0x63b6980?, 0xc0062cca50?})
    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:127 +0x6e5
panic({0x63b6980?, 0xc0062cca50?})
    GOROOT/src/runtime/panic.go:770 +0x132
github.com/cockroachdb/cockroach/pkg/sql/sem/eval.(*evaluator).EvalFuncExpr(0xc0063b4008, {0x8290430, 0xc0062cc9f0}, 0xc0033d6360)
    github.com/cockroachdb/cockroach/pkg/sql/sem/eval/expr.go:483 +0x3e5
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FuncExpr).Eval(0x2?, {0x8290430?, 0xc0062cc9f0?}, {0x83337d0?, 0xc0063b4008?})
    github.com/cockroachdb/cockroach/bazel-out/k8-fastbuild/bin/pkg/sql/sem/tree/eval_expr_generated.go:287 +0x31
github.com/cockroachdb/cockroach/pkg/sql/sem/eval.Expr({0x8290430?, 0xc0062cc9f0?}, 0x6decae1?, {0x82c7a98?, 0xc0033d6360?})
    github.com/cockroachdb/cockroach/pkg/sql/sem/eval/expr.go:26 +0x55
github.com/cockroachdb/cockroach/pkg/sql.(*setVarNode).startExec(0xc006abe080, {{0x8290430, 0xc0062cc9f0}, 0xc0063b4008, 0xc0060390b8})
    github.com/cockroachdb/cockroach/pkg/sql/set_var.go:134 +0x345
github.com/cockroachdb/cockroach/pkg/sql.startExec.func2({0x0?, 0x0?}, {0x8293840, 0xc006abe080})
    github.com/cockroachdb/cockroach/pkg/sql/plan.go:524 +0x183
github.com/cockroachdb/cockroach/pkg/sql.(*planVisitor).visitInternal.func1()
    github.com/cockroachdb/cockroach/pkg/sql/walk.go:112 +0x72
github.com/cockroachdb/cockroach/pkg/sql.(*planVisitor).visitInternal(0xc0077bf048, {0x8293840?, 0xc006abe080}, {0x6dbb3cd?, 0x3?})
    github.com/cockroachdb/cockroach/pkg/sql/walk.go:299 +0x1ba2
github.com/cockroachdb/cockroach/pkg/sql.(*planVisitor).visit(0xc0077bf048, {0x8293840, 0xc006abe080})
    github.com/cockroachdb/cockroach/pkg/sql/walk.go:79 +0x17b
github.com/cockroachdb/cockroach/pkg/sql.walkPlan({0x8290430?, 0xc0062cc9f0?}, {0x8293840?, 0xc006abe080?}, {0x0?, 0x724ef68?, 0xc0062cca20?})
    github.com/cockroachdb/cockroach/pkg/sql/walk.go:43 +0xdd
github.com/cockroachdb/cockroach/pkg/sql.startExec({{0x8290430?, 0xc0062cc9f0?}, 0xc0063b4008?, 0xc0060390b8?}, {0x8293840, 0xc006abe080})
    github.com/cockroachdb/cockroach/pkg/sql/plan.go:527 +0xf6
github.com/cockroachdb/cockroach/pkg/sql.(*planNodeToRowSource).Start(0xc00390e308, {0x8290430, 0xc0062cc9c0})
    github.com/cockroachdb/cockroach/pkg/sql/plan_node_to_row_source.go:171 +0x11d
github.com/cockroachdb/cockroach/pkg/sql/colexec.(*Columnarizer).Init(0xc0065ae008, {0x8290430, 0xc0062cc990})
    github.com/cockroachdb/cockroach/pkg/sql/colexec/columnarizer.go:183 +0x10d
github.com/cockroachdb/cockroach/pkg/sql/colflow.(*batchInfoCollector).init(0xc0077bf1e8?)
    github.com/cockroachdb/cockroach/pkg/sql/colflow/stats.go:94 +0x37
github.com/cockroachdb/cockroach/pkg/sql/colexecerror.CatchVectorizedRuntimeError(0xc006ccc440?)
    github.com/cockroachdb/cockroach/pkg/sql/colexecerror/error.go:152 +0x77
github.com/cockroachdb/cockroach/pkg/sql/colflow.(*batchInfoCollector).Init(0xc006536100, {0x8290430?, 0xc0062cc990?})
    github.com/cockroachdb/cockroach/pkg/sql/colflow/stats.go:103 +0x8b
github.com/cockroachdb/cockroach/pkg/sql/colflow.(*BatchFlowCoordinator).init.func1()
    github.com/cockroachdb/cockroach/pkg/sql/colflow/flow_coordinator.go:241 +0x38
github.com/cockroachdb/cockroach/pkg/sql/colexecerror.CatchVectorizedRuntimeError(0xcc1349?)
    github.com/cockroachdb/cockroach/pkg/sql/colexecerror/error.go:152 +0x77
github.com/cockroachdb/cockroach/pkg/sql/colflow.(*BatchFlowCoordinator).init(0x82903f8?, {0x8290430?, 0xc0062cc990?})
    github.com/cockroachdb/cockroach/pkg/sql/colflow/flow_coordinator.go:240 +0x5a
github.com/cockroachdb/cockroach/pkg/sql/colflow.(*BatchFlowCoordinator).Run(0xc00632c1e0, {0x82903f8?, 0xc005c54190?})
    github.com/cockroachdb/cockroach/pkg/sql/colflow/flow_coordinator.go:274 +0xf0
github.com/cockroachdb/cockroach/pkg/sql/colflow.(*vectorizedFlow).Run(0xc001636cc0, {0x82903f8, 0xc005c54190}, 0x40?)
    github.com/cockroachdb/cockroach/pkg/sql/colflow/vectorized_flow.go:320 +0x24a
github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).Run(0xc002477340, {0x8290430, 0xc0062cc750}, 0xc0038e0750, 0xc005138140, 0xc006abe200, 0xc000139808, 0xc0060395c0, 0xc00390a3b0)
    github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:932 +0xf38
github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).PlanAndRun(0xc002477340, {0x8290430, 0xc0062cc750}, 0xc0060395c0, 0xc0038e0750, 0xc005138140, {{0x8293840, 0xc006abe080}, 0x0}, 0xc000139808, ...)
    github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:1994 +0x235
github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).PlanAndRunAll.func3(0xc0060390b8, 0xc002477340, {0x8290430, 0xc0062cc750}, 0xc0060395c0, 0xc0038e0750, 0xc000139808)
    github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:1708 +0xce
github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).PlanAndRunAll(0xc002477340, {0x8290430, 0xc0062cc750}, 0xc0060395c0, 0xc0038e0750, 0xc0060390b8, 0xc000139808, 0x0)
    github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:1711 +0x31b
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execWithDistSQLEngine(0xc006038a08, {0x8290430, 0xc0062cc750}, 0xc0060390b8, 0x0?, {0x7ff431d39ee8?, 0xc00368a338?}, 0x0, 0xc006ea62d8, {0x82432c0, ...})
    github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:2420 +0x52d
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).dispatchToExecutionEngine(0xc006038a08, {0x8290430, 0xc0062cc1b0}, 0xc0060390b8, {0x7ff431d39ee8, 0xc00368a338})
    github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:1967 +0x1475
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmtInOpenState(0xc006038a08, {0x8290430, 0xc0062cc0f0}, {{0x82b65e0, 0xc006ccc240}, {0x0, 0x0, 0x0}, {0xc00607721e, 0x32}, ...}, ...)
    github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:1174 +0x4c99
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmt.func1({0x8290430?, 0xc0062cc0f0?})
    github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:146 +0xba
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execWithProfiling(0xc254cf0?, {0x8290430?, 0xc0062cc0f0?}, {0x82b65e0?, 0xc006ccc240?}, 0xc00368a338?, 0x6dbb316?)
    github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:3429 +0x302
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmt(0xc006038a08, {0x8290430, 0xc0062cc0f0}, {{0x82b65e0, 0xc006ccc240}, {0x0, 0x0, 0x0}, {0xc00607721e, 0x32}, ...}, ...)
    github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:145 +0x78b
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execCmd.func1(0xc0077c1818, 0xc0077c18e0, 0xc006038a08, 0xc0077c14f0, 0xc0077c1968, 0xc0077c1958, 0xc0077c1988, 0xc0077c19a0)
    github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:2316 +0x416
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execCmd(0xc006038a08)
    github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:2321 +0xbf9
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).run(0xc006038a08, {0x8290430, 0xc00602f470}, 0x3c?, 0xc001a41700?, 0xc002273300?)
    github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:2238 +0x287
github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn(0xc002cfe780?, {0x8290430?, 0xc00602f470?}, {0xc005b52fc0?}, 0x2?, 0xc00602f320?)
    github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:963 +0xfb
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).processCommands(0xc003689c08, {0x8290430, 0xc00602f470}, {0x0, 0x4, {0x1, {0x6dbb16c, 0x3}, {0xc004d66770, 0xf}, ...}, ...}, ...)
    github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:253 +0x5f1
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*Server).serveImpl.func4()
    github.com/cockroachdb/cockroach/pkg/sql/pgwire/server.go:1052 +0xf4
created by github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*Server).serveImpl in goroutine 5118
    github.com/cockroachdb/cockroach/pkg/sql/pgwire/server.go:1049 +0x712

Environment:

cockroach version details:
Build Tag:        v24.2.0
Build Time:       2024/08/08 01:50:30
Distribution:     CCL
Platform:         linux arm64 (aarch64-unknown-linux-gnu)
Go Version:       go1.22.5 X:nocoverageredesign
C Compiler:       gcc 6.5.0
Build Commit ID:  953d09cce5a01cc0053e138516d80a27454f027c
Build Type:       release

Jira issue: CRDB-42414

blathers-crl[bot] commented 1 week ago

Hi @SteveLeungYL, please add branch-* labels to identify which branch(es) this C-bug affects.

:owl: Hoot! I am a Blathers, a bot for CockroachDB. My owner is dev-inf.

blathers-crl[bot] commented 1 week ago

Hello, I am Blathers. I am here to help you get the issue triaged.

Hoot - a bug! Though bugs are the bane of my existence, rest assured the wretched thing will get the best of care here.

I have CC'd a few people who may be able to assist you:

If we have not gotten back to your issue within a few business days, you can try the following:

:owl: Hoot! I am a Blathers, a bot for CockroachDB. My owner is dev-inf.