pingcap / pingcap/tidb

DATA RACE at the ScanDetail

Open
#45,983 1 comment 0 reactions 0 assignees View on GitHub
affects-7.5 affects-8.1 component/test severity/moderate sig/planner type/bug
Dominant language
Go
Stars
40.5k
Forks
6.2k
PR merge metrics
PR metrics pending

Description

## Bug Report

Please answer these questions before submitting your issue. Thanks!

### 1. Minimal reproduce step (Required)

### 2. What did you expect to see? (Required)

### 3. What did you see instead (Required)

```
==================
WARNING: DATA RACE
Write at 0x00c005dd1b00 by goroutine 49946:
sync/atomic.AddInt64()
src/runtime/race_amd64.s:289 +0xb
sync/atomic.AddInt64()
:1 +0x15
github.com/pingcap/tidb/sessionctx/stmtctx.(*StatementContext).MergeScanDetail()
sessionctx/stmtctx/stmtctx.go:1036 +0x168
github.com/pingcap/tidb/sessionctx/stmtctx.(*StatementContext).MergeExecDetails()
sessionctx/stmtctx/stmtctx.go:1008 +0x25d
github.com/pingcap/tidb/distsql.(*selectResult).fetchResp()
distsql/select_result.go:412 +0x83b
github.com/pingcap/tidb/distsql.(*selectResult).Next()
distsql/select_result.go:425 +0x131
github.com/pingcap/tidb/executor.(*IndexReaderExecutor).Next()
executor/distsql.go:249 +0xb9
github.com/pingcap/tidb/executor.Next()
executor/executor.go:253 +0x3d5
github.com/pingcap/tidb/executor.(*UnionExec).resultPuller()
executor/executor.go:1907 +0xac4
github.com/pingcap/tidb/executor.(*UnionExec).initialize.func1()
executor/executor.go:1860 +0x5d
Previous read at 0x00c005dd1b00 by goroutine 49892:
github.com/pingcap/tidb/util/execdetails.ExecDetails.ToZapFields()
util/execdetails/execdetails.go:316 +0xb75
github.com/pingcap/tidb/util.GenLogFields()
util/util.go:123 +0x2fe
executor/test/indexmergereadtest/indexmergereadtest_test.TestProcessInfoRaceWithIndexScan.func1()
executor/test/indexmergereadtest/index_merge_reader_test.go:1162 +0xcc
Goroutine 49946 (running) created at:
github.com/pingcap/tidb/executor.(*UnionExec).initialize()
executor/executor.go:1860 +0x5b2
github.com/pingcap/tidb/executor.(*UnionExec).Next()
executor/executor.go:1933 +0x109
github.com/pingcap/tidb/executor.Next()
executor/executor.go:253 +0x3d5
github.com/pingcap/tidb/executor.(*ExecStmt).next()
executor/adapter.go:1223 +0x94
github.com/pingcap/tidb/executor.(*recordSet).Next()
executor/adapter.go:155 +0x171
github.com/pingcap/tidb/session.(*execStmtResult).Next()
:1 +0x6c
github.com/pingcap/tidb/session.GetRows4Test()
session/tidb.go:350 +0x121
github.com/pingcap/tidb/session.ResultSetToStringSlice()
session/tidb.go:368 +0xbe
github.com/pingcap/tidb/testkit.(*TestKit).ResultSetToResultWithCtx()
testkit/testkit.go:239 +0xac
github.com/pingcap/tidb/testkit.(*TestKit).MustQueryWithContext()
testkit/testkit.go:174 +0x275
github.com/pingcap/tidb/testkit.(*TestKit).MustQuery()
testkit/testkit.go:149 +0xeb
executor/test/indexmergereadtest/indexmergereadtest_test.TestProcessInfoRaceWithIndexScan()
executor/test/indexmergereadtest/index_merge_reader_test.go:1166 +0x498
github.com/pingcap/tidb/session.bootstrapSessionImpl()
session/session.go:3392 +0x7aa
github.com/pingcap/tidb/domain.(*Domain).GetSessionCache()
domain/sysvar_cache.go:62 +0x64
github.com/pingcap/tidb/session.(*session).loadCommonGlobalVariablesIfNeeded()
session/session.go:3763 +0x130
github.com/pingcap/tidb/session.(*session).ExecuteStmt()
session/session.go:2155 +0x15a
github.com/pingcap/tidb/session.(*session).ExecuteInternal()
session/session.go:1669 +0x35a
github.com/pingcap/tidb/domain.(*Domain).LoadPrivilegeLoop()
domain/domain.go:1599 +0x11a
github.com/pingcap/tidb/session.bootstrapSessionImpl()
session/session.go:3385 +0x74a
github.com/pingcap/tidb/session.BootstrapSession()
session/session.go:3306 +0x4b
github.com/pingcap/tidb/testkit.bootstrap()
testkit/mockstore.go:227 +0x76
github.com/pingcap/tidb/testkit.CreateMockStoreAndDomain()
testkit/mockstore.go:200 +0xcd
github.com/pingcap/tidb/testkit.CreateMockStore()
testkit/mockstore.go:68 +0x3c9
executor/test/indexmergereadtest/indexmergereadtest_test.TestProcessInfoRaceWithIndexScan()
executor/test/indexmergereadtest/index_merge_reader_test.go:1141 +0x49
testing.tRunner()
GOROOT/src/testing/testing.go:1595 +0x238
testing.(*T).Run.func1()
GOROOT/src/testing/testing.go:1648 +0x44
Goroutine 49892 (running) created at:
executor/test/indexmergereadtest/indexmergereadtest_test.TestProcessInfoRaceWithIndexScan()
executor/test/indexmergereadtest/index_merge_reader_test.go:1158 +0x472
github.com/pingcap/tidb/session.bootstrapSessionImpl()
session/session.go:3392 +0x7aa
github.com/pingcap/tidb/domain.(*Domain).GetSessionCache()
domain/sysvar_cache.go:62 +0x64
github.com/pingcap/tidb/session.(*session).loadCommonGlobalVariablesIfNeeded()
session/session.go:3763 +0x130
github.com/pingcap/tidb/session.(*session).ExecuteStmt()
session/session.go:2155 +0x15a
github.com/pingcap/tidb/session.(*session).ExecuteInternal()
session/session.go:1669 +0x35a
github.com/pingcap/tidb/domain.(*Domain).LoadPrivilegeLoop()
domain/domain.go:1599 +0x11a
github.com/pingcap/tidb/session.bootstrapSessionImpl()
session/session.go:3385 +0x74a
github.com/pingcap/tidb/session.BootstrapSession()
session/session.go:3306 +0x4b
github.com/pingcap/tidb/testkit.bootstrap()
testkit/mockstore.go:227 +0x76
github.com/pingcap/tidb/testkit.CreateMockStoreAndDomain()
testkit/mockstore.go:200 +0xcd
github.com/pingcap/tidb/testkit.CreateMockStore()
testkit/mockstore.go:68 +0x3c9
executor/test/indexmergereadtest/indexmergereadtest_test.TestProcessInfoRaceWithIndexScan()
executor/test/indexmergereadtest/index_merge_reader_test.go:1141 +0x49
testing.tRunner()
GOROOT/src/testing/testing.go:1595 +0x238
testing.(*T).Run.func1()
GOROOT/src/testing/testing.go:1648 +0x44
==================
==================
WARNING: DATA RACE
Write at 0x00c005dd1b08 by goroutine 49946:
sync/atomic.AddInt64()
src/runtime/race_amd64.s:289 +0xb
sync/atomic.AddInt64()
:1 +0x15
github.com/pingcap/tidb/sessionctx/stmtctx.(*StatementContext).MergeScanDetail()
sessionctx/stmtctx/stmtctx.go:1036 +0x168
github.com/pingcap/tidb/sessionctx/stmtctx.(*StatementContext).MergeExecDetails()
sessionctx/stmtctx/stmtctx.go:1008 +0x25d
github.com/pingcap/tidb/distsql.(*selectResult).fetchResp()
distsql/select_result.go:412 +0x83b
github.com/pingcap/tidb/distsql.(*selectResult).Next()
distsql/select_result.go:425 +0x131
github.com/pingcap/tidb/executor.(*IndexReaderExecutor).Next()
executor/distsql.go:249 +0xb9
github.com/pingcap/tidb/executor.Next()
executor/executor.go:253 +0x3d5
github.com/pingcap/tidb/executor.(*UnionExec).resultPuller()
executor/executor.go:1907 +0xac4
github.com/pingcap/tidb/executor.(*UnionExec).initialize.func1()
executor/executor.go:1860 +0x5d
Previous read at 0x00c005dd1b08 by goroutine 49892:
github.com/pingcap/tidb/util/execdetails.ExecDetails.ToZapFields()
util/execdetails/execdetails.go:319 +0xdc4
github.com/pingcap/tidb/util.GenLogFields()
util/util.go:123 +0x2fe
executor/test/indexmergereadtest/indexmergereadtest_test.TestProcessInfoRaceWithIndexScan.func1()
executor/test/indexmergereadtest/index_merge_reader_test.go:1162 +0xcc
Goroutine 49946 (running) created at:
github.com/pingcap/tidb/executor.(*UnionExec).initialize()
executor/executor.go:1860 +0x5b2
github.com/pingcap/tidb/executor.(*UnionExec).Next()
executor/executor.go:1933 +0x109
github.com/pingcap/tidb/executor.Next()
executor/executor.go:253 +0x3d5
github.com/pingcap/tidb/executor.(*ExecStmt).next()
executor/adapter.go:1223 +0x94
github.com/pingcap/tidb/executor.(*recordSet).Next()
executor/adapter.go:155 +0x171
github.com/pingcap/tidb/session.(*execStmtResult).Next()
:1 +0x6c
github.com/pingcap/tidb/session.GetRows4Test()
session/tidb.go:350 +0x121
github.com/pingcap/tidb/session.ResultSetToStringSlice()
session/tidb.go:368 +0xbe
github.com/pingcap/tidb/testkit.(*TestKit).ResultSetToResultWithCtx()
testkit/testkit.go:239 +0xac
github.com/pingcap/tidb/testkit.(*TestKit).MustQueryWithContext()
testkit/testkit.go:174 +0x275
github.com/pingcap/tidb/testkit.(*TestKit).MustQuery()
testkit/testkit.go:149 +0xeb
executor/test/indexmergereadtest/indexmergereadtest_test.TestProcessInfoRaceWithIndexScan()
executor/test/indexmergereadtest/index_merge_reader_test.go:1166 +0x498
github.com/pingcap/tidb/session.bootstrapSessionImpl()
session/session.go:3392 +0x7aa
github.com/pingcap/tidb/domain.(*Domain).GetSessionCache()
domain/sysvar_cache.go:62 +0x64
github.com/pingcap/tidb/session.(*session).loadCommonGlobalVariablesIfNeeded()
session/session.go:3763 +0x130
github.com/pingcap/tidb/session.(*session).ExecuteStmt()
session/session.go:2155 +0x15a
github.com/pingcap/tidb/session.(*session).ExecuteInternal()
session/session.go:1669 +0x35a
github.com/pingcap/tidb/domain.(*Domain).LoadPrivilegeLoop()
domain/domain.go:1599 +0x11a
github.com/pingcap/tidb/session.bootstrapSessionImpl()
session/session.go:3385 +0x74a
github.com/pingcap/tidb/session.BootstrapSession()
session/session.go:3306 +0x4b
github.com/pingcap/tidb/testkit.bootstrap()
testkit/mockstore.go:227 +0x76
github.com/pingcap/tidb/testkit.CreateMockStoreAndDomain()
testkit/mockstore.go:200 +0xcd
github.com/pingcap/tidb/testkit.CreateMockStore()
testkit/mockstore.go:68 +0x3c9
executor/test/indexmergereadtest/indexmergereadtest_test.TestProcessInfoRaceWithIndexScan()
executor/test/indexmergereadtest/index_merge_reader_test.go:1141 +0x49
testing.tRunner()
GOROOT/src/testing/testing.go:1595 +0x238
testing.(*T).Run.func1()
GOROOT/src/testing/testing.go:1648 +0x44
Goroutine 49892 (running) created at:
executor/test/indexmergereadtest/indexmergereadtest_test.TestProcessInfoRaceWithIndexScan()
executor/test/indexmergereadtest/index_merge_reader_test.go:1158 +0x472
github.com/pingcap/tidb/session.bootstrapSessionImpl()
session/session.go:3392 +0x7aa
github.com/pingcap/tidb/domain.(*Domain).GetSessionCache()
domain/sysvar_cache.go:62 +0x64
github.com/pingcap/tidb/session.(*session).loadCommonGlobalVariablesIfNeeded()
session/session.go:3763 +0x130
github.com/pingcap/tidb/session.(*session).ExecuteStmt()
session/session.go:2155 +0x15a
github.com/pingcap/tidb/session.(*session).ExecuteInternal()
session/session.go:1669 +0x35a
github.com/pingcap/tidb/domain.(*Domain).LoadPrivilegeLoop()
domain/domain.go:1599 +0x11a
github.com/pingcap/tidb/session.bootstrapSessionImpl()
session/session.go:3385 +0x74a
github.com/pingcap/tidb/session.BootstrapSession()
session/session.go:3306 +0x4b
github.com/pingcap/tidb/testkit.bootstrap()
testkit/mockstore.go:227 +0x76
github.com/pingcap/tidb/testkit.CreateMockStoreAndDomain()
testkit/mockstore.go:200 +0xcd
github.com/pingcap/tidb/testkit.CreateMockStore()
testkit/mockstore.go:68 +0x3c9
executor/test/indexmergereadtest/indexmergereadtest_test.TestProcessInfoRaceWithIndexScan()
executor/test/indexmergereadtest/index_merge_reader_test.go:1141 +0x49
testing.tRunner()
GOROOT/src/testing/testing.go:1595 +0x238
testing.(*T).Run.func1()
GOROOT/src/testing/testing.go:1648 +0x44
==================
```
### 4. What is your TiDB version? (Required)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.