Skip to content

DATA RACE at the BindRecord.Bindings #39816

Closed
@hawkingrei

Description

Bug Report

Please answer these questions before submitting your issue. Thanks!

1. Minimal reproduce step (Required)

==================
WARNING: DATA RACE
Read at 0x00c0075f8dc0 by goroutine 13957:
  github.com/pingcap/tidb/bindinfo.(*BindRecord).size()
      bindinfo/bind_record.go:274 +0x152
  github.com/pingcap/tidb/bindinfo.calcBindCacheKVMem()
      bindinfo/bind_cache.go:47 +0x92
  github.com/pingcap/tidb/bindinfo.(*bindCache).set()
      bindinfo/bind_cache.go:97 +0xa4
  github.com/pingcap/tidb/bindinfo.(*bindCache).Copy()
      bindinfo/bind_cache.go:266 +0x375
  github.com/pingcap/tidb/bindinfo.(*BindHandle).Update()
      bindinfo/handle.go:157 +0x2c4
  github.com/pingcap/tidb/domain.(*Domain).globalBindHandleWorkerLoop.func1()
      domain/domain.go:1528 +0x316

Previous write at 0x00c0075f8dc0 by goroutine 107:
  reflect.typedmemmove()
      GOROOT/src/runtime/mbarrier.go:178 +0x0
  internal/reflectlite.typedmemmove()
      GOROOT/src/runtime/mbarrier.go:196 +0x18
  sort.insertionSort_func()
      GOROOT/src/sort/zsortfunc.go:13 +0x94
  sort.pdqsort_func()
      GOROOT/src/sort/zsortfunc.go:73 +0x3cb
  sort.Slice()
      GOROOT/src/sort/slice.go:23 +0xc4
  github.com/pingcap/tidb/executor.(*ShowExec).fetchShowBind()
      executor/show.go:327 +0x352
  github.com/pingcap/tidb/executor.(*ShowExec).fetchAll()
      executor/show.go:246 +0xd32
  github.com/pingcap/tidb/executor.(*ShowExec).Next()
      executor/show.go:117 +0x158
  github.com/pingcap/tidb/executor.Next()
      executor/executor.go:328 +0x632
  github.com/pingcap/tidb/executor.(*ExecStmt).next()
      executor/adapter.go:1142 +0x9d
  github.com/pingcap/tidb/executor.(*recordSet).Next()
      executor/adapter.go:153 +0x179
  github.com/pingcap/tidb/session.(*execStmtResult).Next()
      <autogenerated>:1 +0x76
  github.com/pingcap/tidb/session.GetRows4Test()
      session/tidb.go:336 +0x13a
  github.com/pingcap/tidb/session.ResultSetToStringSlice()
      session/tidb.go:354 +0xca
  github.com/pingcap/tidb/testkit.(*TestKit).ResultSetToResultWithCtx()
      testkit/testkit.go:221 +0xbc
  github.com/pingcap/tidb/testkit.(*TestKit).MustQueryWithContext()
      testkit/testkit.go:156 +0x284
  github.com/pingcap/tidb/testkit.(*TestKit).MustQuery()
      testkit/testkit.go:147 +0x107
  github.com/pingcap/tidb/bindinfo_test.TestAddEvolveTasks()
      bindinfo/bind_test.go:656 +0x31e
  github.com/pingcap/tidb/domain.(*Domain).LoadSysVarCacheLoop()
      domain/domain.go:1361 +0xb9
  github.com/pingcap/tidb/session.BootstrapSession()
      session/session.go:3313 +0x78c
  github.com/pingcap/tidb/domain.(*Domain).GetSessionCache()
      domain/sysvar_cache.go:62 +0x6a
  github.com/pingcap/tidb/session.(*session).loadCommonGlobalVariablesIfNeeded()
      session/session.go:3582 +0x11e
  github.com/pingcap/tidb/session.(*session).ExecuteStmt()
      session/session.go:2126 +0x2fb
  github.com/pingcap/tidb/session.(*session).ExecuteInternal()
      session/session.go:1674 +0x4eb
  github.com/pingcap/tidb/domain.(*Domain).LoadPrivilegeLoop()
      domain/domain.go:1303 +0x143
  github.com/pingcap/tidb/session.BootstrapSession()
      session/session.go:3306 +0x72c
  github.com/pingcap/tidb/testkit.bootstrap()
      testkit/mockstore.go:84 +0x84
  github.com/pingcap/tidb/testkit.CreateMockStoreAndDomain()
      testkit/mockstore.go:69 +0xd0
  github.com/pingcap/tidb/testkit.CreateMockStore()
      testkit/mockstore.go:61 +0x3b2
  github.com/pingcap/tidb/bindinfo_test.TestAddEvolveTasks()
      bindinfo/bind_test.go:642 +0xe4
  testing.tRunner()
      GOROOT/src/testing/testing.go:1446 +0x216
  testing.(*T).Run.func1()
      GOROOT/src/testing/testing.go:1493 +0x47

Goroutine 13957 (running) created at:
  github.com/pingcap/tidb/domain.(*Domain).globalBindHandleWorkerLoop()
      domain/domain.go:1510 +0x10a
  github.com/pingcap/tidb/domain.(*Domain).LoadBindInfoLoop()
      domain/domain.go:1503 +0x1f5
  github.com/pingcap/tidb/session.BootstrapSession()
      session/session.go:3300 +0x688
  github.com/pingcap/tidb/testkit.bootstrap()
      testkit/mockstore.go:84 +0x84
  github.com/pingcap/tidb/testkit.CreateMockStoreAndDomain()
      testkit/mockstore.go:69 +0xd0
  github.com/pingcap/tidb/testkit.CreateMockStore()
      testkit/mockstore.go:61 +0x3b2
  github.com/pingcap/tidb/bindinfo_test.TestAddEvolveTasks()
      bindinfo/bind_test.go:642 +0xe4
  testing.tRunner()
      GOROOT/src/testing/testing.go:1446 +0x216
  testing.(*T).Run.func1()
      GOROOT/src/testing/testing.go:1493 +0x47

Goroutine 107 (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:278 +0x7c9
==================

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

3. What did you see instead (Required)

4. What is your TiDB version? (Required)

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions