pingcap / pingcap/tidb

DATA RACE at the TestForeignKeyAndMemoryTracker

Open
#41,105 2 comments 0 reactions 0 assignees View on GitHub
affects-6.6 affects-7.0 affects-7.1 affects-7.5 affects-8.1 affects-8.5 component/test severity/major sig/sql-infra 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
Read at 0x00c017167988 by goroutine 43136:
github.com/pingcap/tidb/distsql.(*selectResult).Close()
distsql/select_result.go:458 +0x2c4
github.com/pingcap/tidb/executor.(*IndexLookUpExecutor).startIndexWorker.func1()
executor/distsql.go:657 +0x105e
Previous write at 0x00c017167988 by goroutine 20821:
github.com/pingcap/tidb/executor.ResetContextOfStmt()
executor/executor.go:2236 +0x3704
github.com/pingcap/tidb/session.(*session).ExecuteStmt()
session/session.go:2144 +0x39c
github.com/pingcap/tidb/testkit.(*TestKit).ExecWithContext()
testkit/testkit.go:323 +0x96e
github.com/pingcap/tidb/testkit.(*TestKit).MustExecWithContext()
testkit/testkit.go:132 +0xb7
github.com/pingcap/tidb/testkit.(*TestKit).MustExec()
testkit/testkit.go:127 +0xf7
executor/fktest/fktest_test_test.TestForeignKeyAndMemoryTracker()
executor/fktest/foreign_key_test.go:2733 +0x44e
github.com/pingcap/tidb/session.runStmt()
session/session.go:2360 +0x761
github.com/pingcap/tidb/session.(*session).ExecuteStmt()
session/session.go:2217 +0xfa5
github.com/pingcap/tidb/testkit.(*TestKit).ExecWithContext()
testkit/testkit.go:323 +0x96e
github.com/pingcap/tidb/testkit.(*TestKit).MustExecWithContext()
testkit/testkit.go:132 +0xb7
github.com/pingcap/tidb/testkit.(*TestKit).MustExec()
testkit/testkit.go:127 +0xf7
executor/fktest/fktest_test_test.TestForeignKeyAndMemoryTracker()
executor/fktest/foreign_key_test.go:2724 +0x2d2
github.com/pingcap/tidb/domain.(*Domain).LoadSysVarCacheLoop()
domain/domain.go:1403 +0xa8
github.com/pingcap/tidb/session.BootstrapSession()
session/session.go:3338 +0x6d3
github.com/pingcap/tidb/domain.(*Domain).GetSessionCache()
domain/sysvar_cache.go:62 +0x59
github.com/pingcap/tidb/session.(*session).loadCommonGlobalVariablesIfNeeded()
session/session.go:3657 +0x104
github.com/pingcap/tidb/session.(*session).ExecuteStmt()
session/session.go:2136 +0x2a5
github.com/pingcap/tidb/session.(*session).ExecuteInternal()
session/session.go:1670 +0x471
github.com/pingcap/tidb/domain.(*Domain).LoadPrivilegeLoop()
domain/domain.go:1347 +0x130
github.com/pingcap/tidb/session.BootstrapSession()
session/session.go:3331 +0x684
github.com/pingcap/tidb/testkit.bootstrap()
testkit/mockstore.go:85 +0xac
github.com/pingcap/tidb/testkit.CreateMockStoreAndDomain()
testkit/mockstore.go:70 +0xe9
github.com/pingcap/tidb/testkit.CreateMockStore()
testkit/mockstore.go:62 +0x3b1
executor/fktest/fktest_test_test.TestForeignKeyAndMemoryTracker()
executor/fktest/foreign_key_test.go:2710 +0x58
testing.tRunner()
GOROOT/src/testing/testing.go:1446 +0x216
testing.(*T).Run.func1()
GOROOT/src/testing/testing.go:1493 +0x47
Goroutine 43136 (running) created at:
github.com/pingcap/tidb/executor.(*IndexLookUpExecutor).startIndexWorker()
executor/distsql.go:585 +0x506
github.com/pingcap/tidb/executor.(*IndexLookUpExecutor).startWorkers()
executor/distsql.go:539 +0xd7
github.com/pingcap/tidb/executor.(*IndexLookUpExecutor).Next()
executor/distsql.go:765 +0x175
github.com/pingcap/tidb/executor.Next()
executor/executor.go:328 +0x5c3
github.com/pingcap/tidb/executor.(*UnionScanExec).getSnapshotRow()
executor/union_scan.go:245 +0x30f
github.com/pingcap/tidb/executor.(*UnionScanExec).getOneRow()
executor/union_scan.go:197 +0x67
github.com/pingcap/tidb/executor.(*UnionScanExec).Next()
executor/union_scan.go:147 +0x30d
github.com/pingcap/tidb/executor.Next()
executor/executor.go:328 +0x5c3
github.com/pingcap/tidb/executor.(*UpdateExec).updateRows()
executor/update.go:265 +0x417
github.com/pingcap/tidb/executor.(*UpdateExec).Next()
executor/update.go:239 +0x417
github.com/pingcap/tidb/executor.Next()
executor/executor.go:328 +0x5c3
github.com/pingcap/tidb/executor.(*ExecStmt).handleForeignKeyCascade()
executor/adapter.go:682 +0x72c
github.com/pingcap/tidb/executor.(*ExecStmt).handleForeignKeyTrigger()
executor/adapter.go:633 +0x1b9
github.com/pingcap/tidb/executor.(*ExecStmt).handleStmtForeignKeyTrigger()
executor/adapter.go:603 +0x144
github.com/pingcap/tidb/executor.(*ExecStmt).handleNoDelayExecutor()
executor/adapter.go:954 +0x773
github.com/pingcap/tidb/executor.(*ExecStmt).handleNoDelay()
executor/adapter.go:779 +0x34a
github.com/pingcap/tidb/executor.(*ExecStmt).Exec()
executor/adapter.go:574 +0x1299
github.com/pingcap/tidb/session.runStmt()
session/session.go:2360 +0x761
github.com/pingcap/tidb/session.(*session).ExecuteStmt()
session/session.go:2217 +0xfa5
github.com/pingcap/tidb/testkit.(*TestKit).ExecWithContext()
testkit/testkit.go:323 +0x96e
github.com/pingcap/tidb/testkit.(*TestKit).Exec()
testkit/testkit.go:296 +0x95
github.com/pingcap/tidb/testkit.(*TestKit).ExecToErr()
testkit/testkit.go:358 +0x4c
executor/fktest/fktest_test_test.TestForeignKeyAndMemoryTracker()
executor/fktest/foreign_key_test.go:2727 +0x312
github.com/pingcap/tidb/session.runStmt()
session/session.go:2360 +0x761
github.com/pingcap/tidb/session.(*session).ExecuteStmt()
session/session.go:2217 +0xfa5
github.com/pingcap/tidb/testkit.(*TestKit).ExecWithContext()
testkit/testkit.go:323 +0x96e
github.com/pingcap/tidb/testkit.(*TestKit).MustExecWithContext()
testkit/testkit.go:132 +0xb7
github.com/pingcap/tidb/testkit.(*TestKit).MustExec()
testkit/testkit.go:127 +0xf7
executor/fktest/fktest_test_test.TestForeignKeyAndMemoryTracker()
executor/fktest/foreign_key_test.go:2724 +0x2d2
github.com/pingcap/tidb/domain.(*Domain).LoadSysVarCacheLoop()
domain/domain.go:1403 +0xa8
github.com/pingcap/tidb/session.BootstrapSession()
session/session.go:3338 +0x6d3
github.com/pingcap/tidb/domain.(*Domain).GetSessionCache()
domain/sysvar_cache.go:62 +0x59
github.com/pingcap/tidb/session.(*session).loadCommonGlobalVariablesIfNeeded()
session/session.go:3657 +0x104
github.com/pingcap/tidb/session.(*session).ExecuteStmt()
session/session.go:2136 +0x2a5
github.com/pingcap/tidb/session.(*session).ExecuteInternal()
session/session.go:1670 +0x471
github.com/pingcap/tidb/domain.(*Domain).LoadPrivilegeLoop()
domain/domain.go:1347 +0x130
github.com/pingcap/tidb/session.BootstrapSession()
session/session.go:3331 +0x684
github.com/pingcap/tidb/testkit.bootstrap()
testkit/mockstore.go:85 +0xac
github.com/pingcap/tidb/testkit.CreateMockStoreAndDomain()
testkit/mockstore.go:70 +0xe9
github.com/pingcap/tidb/testkit.CreateMockStore()
testkit/mockstore.go:62 +0x3b1
executor/fktest/fktest_test_test.TestForeignKeyAndMemoryTracker()
executor/fktest/foreign_key_test.go:2710 +0x58
testing.tRunner()
GOROOT/src/testing/testing.go:1446 +0x216
testing.(*T).Run.func1()
GOROOT/src/testing/testing.go:1493 +0x47
Goroutine 20821 (running) created at:
testing.(*T).Run()
GOROOT/src/testing/testing.go:1493 +0x75d
testing.runTests.func1()
GOROOT/src/testing/testing.go:1846 +0x99
testing.tRunner()
GOROOT/src/testing/testing.go:1446 +0x216
testing.runTests()
GOROOT/src/testing/testing.go:1844 +0x7ec
testing.(*M).Run()
GOROOT/src/testing/testing.go:1726 +0xa84
go.uber.org/goleak.VerifyTestMain()
external/org_uber_go_goleak/testmain.go:53 +0x70
executor/fktest/fktest_test_test.TestMain()
executor/fktest/main_test.go:43 +0x584
main.main()
bazel-out/k8-fastbuild/bin/executor/fktest/fktest_test_/testmain.go:176 +0x5e8
==================
```
### 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.