-
Notifications
You must be signed in to change notification settings - Fork 4.1k
sql: race condition writing to ResolvableFunctionReference.FunctionReference #90965
Copy link
Copy link
Closed
Closed
Copy link
Labels
C-bugCode not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.T-sql-foundationsSQL Foundations Team (formerly SQL Schema + SQL Sessions)SQL Foundations Team (formerly SQL Schema + SQL Sessions)
Description
Describe the problem
See
==================
WARNING: DATA RACE
Read at 0x00c008b1dd00 by goroutine 733369:
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*ResolvableFunctionReference).Format()
<autogenerated>:1 +0x3c
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).formatNodeOrHideConstants()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/hide_constants.go:49 +0x203
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).FormatNode()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/format.go:452 +0x136
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FuncExpr).Format.func1()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/expr.go:1359 +0x47
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).WithFlags()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/format.go:376 +0x130
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FuncExpr).Format()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/expr.go:1358 +0x16c
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).formatNodeOrHideConstants()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/hide_constants.go:49 +0x203
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).FormatNode()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/format.go:452 +0x136
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*SelectExpr).Format()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/select.go:184 +0x66
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).formatNodeOrHideConstants()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/hide_constants.go:49 +0x203
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).FormatNode()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/format.go:452 +0x136
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*SelectExprs).Format()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/select.go:151 +0x64
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).formatNodeOrHideConstants()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/hide_constants.go:49 +0x203
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).FormatNode()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/format.go:452 +0x136
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*SelectClause).Format()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/select.go:118 +0x1f0
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).formatNodeOrHideConstants()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/hide_constants.go:49 +0x203
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).FormatNode()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/format.go:452 +0x136
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*Select).Format()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/select.go:57 +0x96
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).formatNodeOrHideConstants()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/hide_constants.go:49 +0x203
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).FormatNode()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/format.go:452 +0x136
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.AsStringWithFlags()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/format.go:590 +0x8d
github.com/cockroachdb/cockroach/pkg/sql.formatStatementHideConstants()
github.com/cockroachdb/cockroach/pkg/sql/exec_util.go:3427 +0xc57
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).serialize()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:3180 +0xbf8
github.com/cockroachdb/cockroach/pkg/sql.(*SessionRegistry).SerializeAllLocked()
github.com/cockroachdb/cockroach/pkg/sql/exec_util.go:2118 +0x1a4
github.com/cockroachdb/cockroach/pkg/server.(*baseStatusServer).getLocalSessions()
github.com/cockroachdb/cockroach/pkg/server/status.go:219 +0x3c8
github.com/cockroachdb/cockroach/pkg/server.(*statusServer).ListLocalSessions()
github.com/cockroachdb/cockroach/pkg/server/status.go:2623 +0x84
github.com/cockroachdb/cockroach/pkg/server/serverpb._Status_ListLocalSessions_Handler.func1()
github.com/cockroachdb/cockroach/pkg/server/serverpb/bazel-out/k8-fastbuild/bin/pkg/server/serverpb/serverpb_go_proto_/github.com/cockroachdb/cockroach/pkg/server/serverpb/status.pb.go:8366 +0x8b
github.com/cockroachdb/cockroach/pkg/util/tracing/grpcinterceptor.ServerInterceptor.func1()
github.com/cockroachdb/cockroach/pkg/util/tracing/grpcinterceptor/grpc_interceptor.go:114 +0x634
google.golang.org/grpc.chainUnaryInterceptors.func1.1()
google.golang.org/grpc/external/org_golang_google_grpc/server.go:1117 +0x125
github.com/cockroachdb/cockroach/pkg/rpc.NewServerEx.func3()
github.com/cockroachdb/cockroach/pkg/rpc/pkg/rpc/context.go:263 +0xf8
google.golang.org/grpc.chainUnaryInterceptors.func1.1()
google.golang.org/grpc/external/org_golang_google_grpc/server.go:1120 +0x22a
github.com/cockroachdb/cockroach/pkg/rpc.kvAuth.unaryInterceptor()
github.com/cockroachdb/cockroach/pkg/rpc/pkg/rpc/auth.go:73 +0x1c1
github.com/cockroachdb/cockroach/pkg/rpc.kvAuth.unaryInterceptor-fm()
<autogenerated>:1 +0x99
google.golang.org/grpc.chainUnaryInterceptors.func1.1()
google.golang.org/grpc/external/org_golang_google_grpc/server.go:1120 +0x22a
github.com/cockroachdb/cockroach/pkg/rpc.NewServerEx.func1.1()
github.com/cockroachdb/cockroach/pkg/rpc/pkg/rpc/context.go:232 +0x70
github.com/cockroachdb/cockroach/pkg/util/stop.(*Stopper).RunTaskWithErr()
github.com/cockroachdb/cockroach/pkg/util/stop/stopper.go:341 +0x147
github.com/cockroachdb/cockroach/pkg/rpc.NewServerEx.func1()
github.com/cockroachdb/cockroach/pkg/rpc/pkg/rpc/context.go:230 +0x137
google.golang.org/grpc.chainUnaryInterceptors.func1.1()
google.golang.org/grpc/external/org_golang_google_grpc/server.go:1120 +0x22a
google.golang.org/grpc.chainUnaryInterceptors.func1()
google.golang.org/grpc/external/org_golang_google_grpc/server.go:1122 +0x298
github.com/cockroachdb/cockroach/pkg/server/serverpb._Status_ListLocalSessions_Handler()
github.com/cockroachdb/cockroach/pkg/server/serverpb/bazel-out/k8-fastbuild/bin/pkg/server/serverpb/serverpb_go_proto_/github.com/cockroachdb/cockroach/pkg/server/serverpb/status.pb.go:8368 +0x1dd
google.golang.org/grpc.(*Server).processUnaryRPC()
google.golang.org/grpc/external/org_golang_google_grpc/server.go:1283 +0x1409
google.golang.org/grpc.(*Server).handleStream()
google.golang.org/grpc/external/org_golang_google_grpc/server.go:1620 +0xff8
google.golang.org/grpc.(*Server).serveStreams.func1.2()
google.golang.org/grpc/external/org_golang_google_grpc/server.go:922 +0xec
Previous write at 0x00c008b1dd00 by goroutine 733356:
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*ResolvableFunctionReference).Resolve()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/function_name.go:114 +0x344
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*scope).VisitPre()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/scope.go:1061 +0x224
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.WalkExpr()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:825 +0x7a
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*scope).walkExprTree()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/scope.go:428 +0x8d
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*scope).resolveType()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/scope.go:467 +0x4f
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).analyzeSelectList()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/project.go:160 +0x37b
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).analyzeProjectionList()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/project.go:94 +0x3b9
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildSelectClause()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:1065 +0x41c
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildSelectStmtWithoutParens()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:1002 +0x25c
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildSelect.func1()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:971 +0x14c
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).processWiths()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/with.go:116 +0xcf
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildSelect()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:970 +0x727
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildStmt()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:305 +0xb0e
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildStmtAtRoot()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:252 +0x2ef
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).Build()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:226 +0x5e7
github.com/cockroachdb/cockroach/pkg/sql.(*optPlanningCtx).buildExecMemo()
github.com/cockroachdb/cockroach/pkg/sql/plan_opt.go:563 +0xaf6
github.com/cockroachdb/cockroach/pkg/sql.(*planner).makeOptimizerPlan()
github.com/cockroachdb/cockroach/pkg/sql/plan_opt.go:231 +0x1c9
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).makeExecPlan()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:1471 +0x72
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).dispatchToExecutionEngine()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:1096 +0x434
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmtInOpenState()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:725 +0x37a9
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmt.func1()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:129 +0x18e
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execWithProfiling()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:2421 +0x50f
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmt()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:128 +0x6cd
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execCmd.func1()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1922 +0x790
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execCmd()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1927 +0x1cba
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).run()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1847 +0x424
github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:828 +0x1be
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).processCommandsAsync.func1()
github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:728 +0x54a
Goroutine 733369 (running) created at:
google.golang.org/grpc.(*Server).serveStreams.func1()
google.golang.org/grpc/external/org_golang_google_grpc/server.go:920 +0x4dd
google.golang.org/grpc/internal/transport.(*http2Server).operateHeaders()
google.golang.org/grpc/internal/transport/external/org_golang_google_grpc/internal/transport/http2_server.go:600 +0x3209
google.golang.org/grpc/internal/transport.(*http2Server).HandleStreams()
google.golang.org/grpc/internal/transport/external/org_golang_google_grpc/internal/transport/http2_server.go:645 +0x378
google.golang.org/grpc.(*Server).serveStreams()
google.golang.org/grpc/external/org_golang_google_grpc/server.go:906 +0x275
google.golang.org/grpc.(*Server).handleRawConn.func1()
google.golang.org/grpc/external/org_golang_google_grpc/server.go:848 +0x64
Goroutine 733356 (running) created at:
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).processCommandsAsync()
github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:639 +0x3a4
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).serveImpl()
github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:360 +0xcd1
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*Server).serveConn()
github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:174 +0x484
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*Server).ServeConn()
github.com/cockroachdb/cockroach/pkg/sql/pgwire/server.go:878 +0x108b
github.com/cockroachdb/cockroach/pkg/server.(*SQLServer).startServeSQL.func1.1()
github.com/cockroachdb/cockroach/pkg/server/server_sql.go:1517 +0x124
github.com/cockroachdb/cockroach/pkg/util/netutil.(*Server).ServeWith.func1()
github.com/cockroachdb/cockroach/pkg/util/netutil/net.go:162 +0x178
github.com/cockroachdb/cockroach/pkg/util/stop.(*Stopper).RunAsyncTaskEx.func2()
github.com/cockroachdb/cockroach/pkg/util/stop/stopper.go:489 +0x1f6
==================
Jira issue: CRDB-21045
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
C-bugCode not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.T-sql-foundationsSQL Foundations Team (formerly SQL Schema + SQL Sessions)SQL Foundations Team (formerly SQL Schema + SQL Sessions)
Type
Projects
Status
Done