pingcap / pingcap/tidb

DATA RACE at SessionVars.systems

Open
#41,112 1 comment 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

Write at 0x00c0059c6270 by goroutine 26772:

runtime.mapassign_faststr()

GOROOT/src/runtime/map_faststr.go:203 +0x0

github.com/pingcap/tidb/sessionctx/variable.(*SysVar).SetSessionFromHook()

sessionctx/variable/variable.go:225 +0x16c

github.com/pingcap/tidb/sessionctx/variable.(*SessionVars).SetSystemVarWithRelaxedValidation()

sessionctx/variable/session.go:2273 +0x17d

github.com/pingcap/tidb/session.(*session).loadCommonGlobalVariablesIfNeeded()

session/session.go:3641 +0x2db

github.com/pingcap/tidb/session.(*session).ExecuteStmt()

session/session.go:2114 +0x16b

github.com/pingcap/tidb/session.(*session).ExecuteInternal()

session/session.go:1655 +0x365

github.com/pingcap/tidb/bindinfo.(*BindHandle).CreateBindRecord()

bindinfo/handle.go:224 +0x298

github.com/pingcap/tidb/bindinfo.(*BindHandle).CaptureBaselines()

bindinfo/handle.go:945 +0xd87

github.com/pingcap/tidb/domain.(*Domain).globalBindHandleWorkerLoop.func1()

domain/domain.go:1573 +0x4eb

github.com/pingcap/tidb/util.(*WaitGroupEnhancedWrapper).Run.func1()

util/wait_group_wrapper.go:96 +0xde

Previous read at 0x00c0059c6270 by goroutine 117:

runtime.mapaccess1_faststr()

GOROOT/src/runtime/map_faststr.go:13 +0x0

github.com/pingcap/tidb/sessionctx/variable.(*SessionVars).GetCharsetInfo()

sessionctx/variable/session.go:1911 +0xa7e

github.com/pingcap/tidb/bindinfo.(*BindHandle).CaptureBaselines()

bindinfo/handle.go:935 +0x9dc

github.com/pingcap/tidb/executor.(*SQLBindExec).captureBindings()

executor/bind.go:167 +0x64

github.com/pingcap/tidb/executor.(*SQLBindExec).Next()

executor/bind.go:59 +0x153

github.com/pingcap/tidb/executor.Next()

executor/executor.go:324 +0x375

github.com/pingcap/tidb/executor.(*ExecStmt).next()

executor/adapter.go:1195 +0x9d

github.com/pingcap/tidb/executor.(*ExecStmt).handleNoDelayExecutor()

executor/adapter.go:947 +0x5fc

github.com/pingcap/tidb/executor.(*ExecStmt).handleNoDelay()

executor/adapter.go:779 +0x404

github.com/pingcap/tidb/executor.(*ExecStmt).Exec()

executor/adapter.go:574 +0x146d

github.com/pingcap/tidb/session.runStmt()

session/session.go:2338 +0x701

github.com/pingcap/tidb/session.(*session).ExecuteStmt()

session/session.go:2195 +0x1024

github.com/pingcap/tidb/testkit.(*TestKit).ExecWithContext()

testkit/testkit.go:323 +0x84e

github.com/pingcap/tidb/testkit.(*TestKit).MustExecWithContext()

testkit/testkit.go:132 +0xb7

github.com/pingcap/tidb/testkit.(*TestKit).MustExec()

testkit/testkit.go:127 +0xf7

github.com/pingcap/tidb/bindinfo_test.TestCaptureBaselinesDefaultDB()

bindinfo/capture_test.go:223 +0x369

github.com/pingcap/tidb/session.runStmt()

session/session.go:2338 +0x701

github.com/pingcap/tidb/session.(*session).ExecuteStmt()

session/session.go:2195 +0x1024

github.com/pingcap/tidb/testkit.(*TestKit).ExecWithContext()

testkit/testkit.go:323 +0x84e

github.com/pingcap/tidb/testkit.(*TestKit).MustExecWithContext()

testkit/testkit.go:132 +0xb7

github.com/pingcap/tidb/testkit.(*TestKit).MustExec()

testkit/testkit.go:127 +0xf7

github.com/pingcap/tidb/bindinfo_test.TestCaptureBaselinesDefaultDB()

bindinfo/capture_test.go:212 +0xb2

github.com/pingcap/tidb/domain.(*Domain).LoadSysVarCacheLoop()

domain/domain.go:1403 +0xb9

github.com/pingcap/tidb/session.BootstrapSession()

session/session.go:3316 +0x7cc

github.com/pingcap/tidb/domain.(*Domain).GetSessionCache()

domain/sysvar_cache.go:62 +0x6a

github.com/pingcap/tidb/session.(*session).loadCommonGlobalVariablesIfNeeded()

session/session.go:3635 +0x11e

github.com/pingcap/tidb/session.(*session).ExecuteStmt()

session/session.go:2114 +0x16b

github.com/pingcap/tidb/session.(*session).ExecuteInternal()

session/session.go:1655 +0x365

github.com/pingcap/tidb/domain.(*Domain).LoadPrivilegeLoop()

domain/domain.go:1347 +0x143

github.com/pingcap/tidb/session.BootstrapSession()

session/session.go:3309 +0x76c

github.com/pingcap/tidb/testkit.bootstrap()

testkit/mockstore.go:85 +0x84

github.com/pingcap/tidb/testkit.CreateMockStoreAndDomain()

testkit/mockstore.go:70 +0xd0

github.com/pingcap/tidb/testkit.CreateMockStore()

testkit/mockstore.go:62 +0x3b2

github.com/pingcap/tidb/bindinfo_test.TestCaptureBaselinesDefaultDB()

bindinfo/capture_test.go:207 +0x58

testing.tRunner()

GOROOT/src/testing/testing.go:1446 +0x216

testing.(*T).Run.func1()

GOROOT/src/testing/testing.go:1493 +0x47

Goroutine 26772 (running) created at:

github.com/pingcap/tidb/util.(*WaitGroupEnhancedWrapper).Run()

util/wait_group_wrapper.go:91 +0x15a

github.com/pingcap/tidb/domain.(*Domain).globalBindHandleWorkerLoop()

domain/domain.go:1548 +0x124

github.com/pingcap/tidb/domain.(*Domain).LoadBindInfoLoop()

domain/domain.go:1542 +0x1f5

github.com/pingcap/tidb/session.BootstrapSession()

session/session.go:3303 +0x6c8

github.com/pingcap/tidb/testkit.bootstrap()

testkit/mockstore.go:85 +0x84

github.com/pingcap/tidb/testkit.CreateMockStoreAndDomain()

testkit/mockstore.go:70 +0xd0

github.com/pingcap/tidb/testkit.CreateMockStore()

testkit/mockstore.go:62 +0x3b2

github.com/pingcap/tidb/bindinfo_test.TestCaptureBaselinesDefaultDB()

bindinfo/capture_test.go:207 +0x58

testing.tRunner()

GOROOT/src/testing/testing.go:1446 +0x216

testing.(*T).Run.func1()

GOROOT/src/testing/testing.go:1493 +0x47

Goroutine 117 (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

github.com/pingcap/tidb/bindinfo_test.TestMain()

bindinfo/main_test.go:32 +0x43c

main.main()

bazel-out/k8-fastbuild/bin/bindinfo/bindinfo_test_/testmain.go:274 +0x7c9

==================

```
### 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.