# [Known Issues] TiDB 对 information_schema Join 导致 TiDB panic 异常重启

## Key Words

join, TiDB 异常重启, Panic

## Description

TiDB 出现 Panic 日志未发现异常报错，系统也没有触发 OOM，搜索 tidb_stderr.log 中堆栈信息，发现关键字 `concurrent map read and map write`：

## Root Cause

对 information_schema 表进行 join 查询操作，引发 go map 并发问题。

相关 issue <https://github.com/pingcap/tidb/issues/33385>

## Diagnostic Steps

tidb_stderr.log 打印 panic 日志提示 fatal error: concurrent map read and map write，对比错误栈与下述相似  

```go
fatal error: concurrent map writes

goroutine 595 [running]:
runtime.throw({0x3860407?, 0x5b05c28?})
        /home/wshwsh12/go/go1.18/src/runtime/panic.go:992 +0x71 fp=0xc0109cf630 sp=0xc0109cf600 pc=0x129d811
runtime.mapassign_fast64ptr(0x3df17f8?, 0xc00fe0cfc0?, 0xc000ed6900)
        /home/wshwsh12/go/go1.18/src/runtime/map_fast64.go:192 +0x2dc fp=0xc0109cf668 sp=0xc0109cf630 pc=0x127971c
github.com/pingcap/tidb/planner/core.(*PlanBuilder).buildDataSource(0xc010828680, {0x3d9e680, 0xc0107e84b0}, 0xc0106b9d40, 0xc01090b080)
        /home/wshwsh12/project/tidb/planner/core/logical_plan_builder.go:4265 +0x2b45 fp=0xc0109cffe0 sp=0xc0109cf668 pc=0x26aa0c5
github.com/pingcap/tidb/planner/core.(*PlanBuilder).buildResultSetNode(0xc010828680, {0x3d9e680, 0xc0107e84b0}, {0x3daff10?, 0xc01090b030?})
        /home/wshwsh12/project/tidb/planner/core/logical_plan_builder.go:348 +0x196 fp=0xc0109d0278 sp=0xc0109cffe0 pc=0x2683e96
github.com/pingcap/tidb/planner/core.(*PlanBuilder).buildJoin(0x0?, {0x3d9e680?, 0xc0107e84b0?}, 0x0?)
        /home/wshwsh12/project/tidb/planner/core/logical_plan_builder.go:669 +0x71a fp=0xc0109d0730 sp=0xc0109d0278 pc=0x268961a
github.com/pingcap/tidb/planner/core.(*PlanBuilder).buildResultSetNode(0x0?, {0x3d9e680?, 0xc0107e84b0?}, {0x3daf360?, 0xc0107dafc0?})
        /home/wshwsh12/project/tidb/planner/core/logical_plan_builder.go:335 +0x2d1 fp=0xc0109d09c8 sp=0xc0109d0730 pc=0x2683fd1
github.com/pingcap/tidb/planner/core.(*PlanBuilder).buildTableRefs(0xc010828680?, {0x3d9e680?, 0xc0107e84b0?}, 0x0?)
        /home/wshwsh12/project/tidb/planner/core/logical_plan_builder.go:329 +0x85 fp=0xc0109d0a40 sp=0xc0109d09c8 pc=0x2683be5
github.com/pingcap/tidb/planner/core.(*PlanBuilder).buildSelect(0xc010828680, {0x3d9e680, 0xc0107e84b0}, 0xc01024db00)
        /home/wshwsh12/project/tidb/planner/core/logical_plan_builder.go:3580 +0x55b fp=0xc0109d0ec0 sp=0xc0109d0a40 pc=0x26a3a5b
github.com/pingcap/tidb/planner/core.(*PlanBuilder).buildIntersect(0x0?, {0x3d9e680, 0xc0107e84b0}, {0xc0109d1230, 0x1, 0x127196d?})
        /home/wshwsh12/project/tidb/planner/core/logical_plan_builder.go:1561 +0xac fp=0xc0109d1020 sp=0xc0109d0ec0 pc=0x269272c
github.com/pingcap/tidb/planner/core.(*PlanBuilder).buildSetOpr(0xc010828680, {0x3d9e680, 0xc0107e84b0}, 0xc01090b110)
        /home/wshwsh12/project/tidb/planner/core/logical_plan_builder.go:1475 +0x2cb fp=0xc0109d1270 sp=0xc0109d1020 pc=0x269130b
github.com/pingcap/tidb/planner/core.(*PlanBuilder).Build(0xc010828680, {0x3d9e680, 0xc0107e84b0}, {0x3dab8c8?, 0xc01090b110?})
        /home/wshwsh12/project/tidb/planner/core/planbuilder.go:701 +0x91c fp=0xc0109d12d8 sp=0xc0109d1270 pc=0x26f43dc
github.com/pingcap/tidb/planner/core.(*PlanBuilder).BuildDataSourceFromView(0xc010828680, {0x3d9e680, 0xc0107e84b0}, {{0xc000e018c8?, 0xc0009c9420?}, {0xc000e018cc?, 0xc0009c9420?}}, 0xc000ed6a80)
        /home/wshwsh12/project/tidb/planner/core/logical_plan_builder.go:4545 +0x2c5 fp=0xc0109d1550 sp=0xc0109d12d8 pc=0x26ad825
github.com/pingcap/tidb/executor.tryFillViewColumnType({0x3d9e680, 0xc0107e84b0}, {0x3df17f8, 0xc00fe0cfc0}, {0x3dbd590, 0xc0009c9420}, {{0xc000e018c8, 0x4}, {0xc000e018cc, 0x4}}, ...)
        /home/wshwsh12/project/tidb/executor/show.go:1902 +0x235 fp=0xc0109d1628 sp=0xc0109d1550 pc=0x2ed4675
github.com/pingcap/tidb/executor.(*hugeMemTableRetriever).dataForColumnsInTable(0xc0107fd570, {0x3d9e680, 0xc0107e84b0}, {0x3df17f8?, 0xc00fe0cfc0?}, 0xc0009c8770, 0xc000ed6a80, 0x4?, 0xc0107ec230)
        /home/wshwsh12/project/tidb/executor/infoschema_reader.go:680 +0x108 fp=0xc0109d1a28 sp=0xc0109d1628 pc=0x2e39de8
github.com/pingcap/tidb/executor.(*hugeMemTableRetriever).setDataForColumns(0xc0107fd570, {0x3d9e680, 0xc0107e84b0}, {0x3df17f8, 0xc00fe0cfc0?}, 0x12f41b7?)
        /home/wshwsh12/project/tidb/executor/infoschema_reader.go:669 +0x1bd fp=0xc0109d1af0 sp=0xc0109d1a28 pc=0x2e39b3d
github.com/pingcap/tidb/executor.(*hugeMemTableRetriever).retrieve(0xc0107fd570, {0x3d9e680?, 0xc0107e84b0?}, {0x3df17f8?, 0xc00fe0cfc0?})
        /home/wshwsh12/project/tidb/executor/infoschema_reader.go:2547 +0x1bf fp=0xc0109d1bb8 sp=0xc0109d1af0 pc=0x2e4c33f
github.com/pingcap/tidb/executor.(*MemTableReaderExec).Next(0xc0107dad80, {0x3d9e680, 0xc0107e84b0}, 0xc0107c05a0)
        /home/wshwsh12/project/tidb/executor/memtable_reader.go:118 +0x29b fp=0xc0109d1d20 sp=0xc0109d1bb8 pc=0x2e9133b
github.com/pingcap/tidb/executor.Next({0x3d9e680, 0xc0107e84b0}, {0x3da0c40, 0xc0107dad80}, 0xc0107c05a0)
        /home/wshwsh12/project/tidb/executor/executor.go:302 +0x496 fp=0xc0109d1e60 sp=0xc0109d1d20 pc=0x2e04016
github.com/pingcap/tidb/executor.(*HashJoinExec).fetchProbeSideChunks(0xc0107f0d80, {0x3d9e680, 0xc0107e84b0})
        /home/wshwsh12/project/tidb/executor/join.go:214 +0x1d6 fp=0xc0109d1f28 sp=0xc0109d1e60 pc=0x2e75816
github.com/pingcap/tidb/executor.(*HashJoinExec).fetchAndProbeHashTable.func1()
        /home/wshwsh12/project/tidb/executor/join.go:338 +0x8f fp=0xc0109d1f90 sp=0xc0109d1f28 pc=0x2e76acf
github.com/pingcap/tidb/util.WithRecovery(0x25c8d26?, 0xc000166500?)
        /home/wshwsh12/project/tidb/util/misc.go:100 +0x53 fp=0xc0109d1fc0 sp=0xc0109d1f90 pc=0x1ee2533
github.com/pingcap/tidb/executor.(*HashJoinExec).fetchAndProbeHashTable.func3()
        /home/wshwsh12/project/tidb/executor/join.go:336 +0x2a fp=0xc0109d1fe0 sp=0xc0109d1fc0 pc=0x2e76a0a
runtime.goexit()
        /home/wshwsh12/go/go1.18/src/runtime/asm_amd64.s:1571 +0x1 fp=0xc0109d1fe8 sp=0xc0109d1fe0 pc=0x12d1761
created by github.com/pingcap/tidb/executor.(*HashJoinExec).fetchAndProbeHashTable
        /home/wshwsh12/project/tidb/executor/join.go:336 +0x14f
```

## Resolution

修复 PR merge 后，包括目前已发布或即将发布的版本：v5.2.4 及以上版本。

## Workaround

不对系统表进行 join 查询操作

## Affected Versions

v6.0.0
v5.4.0 - v5.4.3
v5.3.0 - v5.3.4
v5.2.0 - v5.2.4
v5.1.0 - v5.1.4
v4.0.*
