-
Notifications
You must be signed in to change notification settings - Fork 4.1k
opt: remove race-causing lazy calculation of properties #36148
Copy link
Copy link
Closed
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.O-sqlsmith
Milestone
Description
WARNING: DATA RACE
Read at 0x000005ee2ca8 by goroutine 340:
github.com/cockroachdb/cockroach/pkg/sql/opt/memo.(*FiltersItem).ScalarProps()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/memo/expr.og.go:6310 +0x47
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*CustomFuncs).IsContradiction()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/custom_funcs.go:429 +0x5e
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructSelect()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:273 +0x1291
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructSelect()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:159 +0x671
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildWhere()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:728 +0x42b
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildSelectClause()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:636 +0xd0
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildSelect()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:589 +0x47e
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildStmt()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:215 +0x3c4
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*scope).replaceSubquery()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/scope.go:1102 +0x28c
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*scope).VisitPre()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/scope.go:878 +0x2fc
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.WalkExpr()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:680 +0x83
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*scope).walkExprTree()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/scope.go:266 +0x7e
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*scope).resolveType()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/scope.go:302 +0x59
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).analyzeSelectList()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/project.go:146 +0x65e
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).analyzeReturningList()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/project.go:98 +0x28a
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*mutationBuilder).buildReturning()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/mutation_builder.go:677 +0x9ad
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*mutationBuilder).buildDelete()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/delete.go:92 +0x199
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildDelete()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/delete.go:78 +0x4d4
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildStmt()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:206 +0x28f
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildDataSource()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:121 +0x105e
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildDataSource()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:57 +0x3da
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildFromTables()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:748 +0xa1
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildFromTables()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:755 +0x115
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildFrom()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:694 +0xdd
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildSelectClause()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:635 +0x85
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildSelect()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:589 +0x47e
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildStmt()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:215 +0x3c4
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*scope).replaceSubquery()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/scope.go:1102 +0x28c
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*scope).VisitPre()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/scope.go:878 +0x2fc
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.WalkExpr()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:680 +0x83
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*CastExpr).Walk()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:131 +0x6c
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.WalkExpr()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:683 +0x45b
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*BinaryExpr).Walk()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:73 +0xe3
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.WalkExpr()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:683 +0x45b
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*ParenExpr).Walk()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:466 +0x7e
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.WalkExpr()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:683 +0x45b
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*CastExpr).Walk()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:131 +0x6c
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.WalkExpr()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:683 +0x45b
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.walkExprSlice()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:515 +0xe4
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FuncExpr).Walk()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:303 +0x97
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.WalkExpr()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:683 +0x45b
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*CastExpr).Walk()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:131 +0x6c
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.WalkExpr()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:683 +0x45b
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*scope).walkExprTree()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/scope.go:266 +0x7e
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*scope).resolveType()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/scope.go:302 +0x59
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).analyzeSelectList()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/project.go:146 +0x65e
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).analyzeProjectionList()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/project.go:80 +0x302
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildSelectClause()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:644 +0x31e
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildSelect()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:589 +0x47e
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*mutationBuilder).buildInputForInsert()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/insert.go:538 +0x325
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildInsert()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/insert.go:221 +0x446
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildStmt()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:212 +0x4c0
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).Build()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:159 +0x23e
github.com/cockroachdb/cockroach/pkg/sql.(*optPlanningCtx).buildExecMemo()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/plan_opt.go:425 +0x3b3
github.com/cockroachdb/cockroach/pkg/sql.(*planner).makeOptimizerPlan()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/plan_opt.go:154 +0xea
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).makeExecPlan()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:987 +0x1ee
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).dispatchToExecutionEngine()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:874 +0x1f5
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmtInOpenState()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:459 +0xf86
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmt()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:101 +0x7d9
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).run()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1183 +0x37d3
github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:433 +0xef
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).serveImpl.func4()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:338 +0xfc
Previous write at 0x000005ee2ca8 by goroutine 260:
github.com/cockroachdb/cockroach/pkg/sql/opt/memo.(*logicalPropsBuilder).buildFiltersItemProps()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/memo/logical_props_builder.go:1101 +0x275
github.com/cockroachdb/cockroach/pkg/sql/opt/memo.(*FiltersItem).ScalarProps()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/memo/expr.og.go:6311 +0x97
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*CustomFuncs).IsContradiction()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/custom_funcs.go:429 +0x5e
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructSelect()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:273 +0x1291
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructSelect()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:159 +0x671
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildWhere()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:728 +0x42b
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*mutationBuilder).buildInputForUpdateOrDelete()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/mutation_builder.go:198 +0x1aa
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildUpdate()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/update.go:108 +0x414
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildStmt()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:224 +0x23c
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).Build()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:159 +0x23e
github.com/cockroachdb/cockroach/pkg/sql.(*optPlanningCtx).buildExecMemo()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/plan_opt.go:425 +0x3b3
github.com/cockroachdb/cockroach/pkg/sql.(*planner).makeOptimizerPlan()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/plan_opt.go:154 +0xea
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).makeExecPlan()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:987 +0x1ee
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).dispatchToExecutionEngine()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:874 +0x1f5
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmtInOpenState()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:459 +0xf86
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmt()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:101 +0x7d9
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).run()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1183 +0x37d3
github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:433 +0xef
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).serveImpl.func4()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:338 +0xfc
Goroutine 340 (running) created at:
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).serveImpl()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:321 +0x1580
github.com/cockroachdb/cockroach/pkg/sql/pgwire.serveConn()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:170 +0x2e8
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*Server).ServeConn()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/server.go:518 +0xc4e
github.com/cockroachdb/cockroach/pkg/server.(*Server).Start.func20.1()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/server/server.go:1713 +0x1b7
github.com/cockroachdb/cockroach/pkg/util/netutil.(*Server).ServeWith.func1()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/util/netutil/net.go:139 +0xdf
Goroutine 260 (running) created at:
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).serveImpl()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:321 +0x1580
github.com/cockroachdb/cockroach/pkg/sql/pgwire.serveConn()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:170 +0x2e8
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*Server).ServeConn()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/server.go:518 +0xc4e
github.com/cockroachdb/cockroach/pkg/server.(*Server).Start.func20.1()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/server/server.go:1713 +0x1b7
github.com/cockroachdb/cockroach/pkg/util/netutil.(*Server).ServeWith.func1()
/home/mjibson/src/github.com/cockroachdb/cockroach/pkg/util/netutil/net.go:139 +0xdf
Found while running multiple sqlsmiths:
make testrace 'PKG=./pkg/sql/tests' 'TESTS=SQLSmith' 'TESTFLAGS=-rsg 10m -rsg-routines 5 -v'
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.O-sqlsmith