From 0ae7cfb81d674985f80cddf8237155c8644c4e4e Mon Sep 17 00:00:00 2001 From: Sasha Sobol Date: Tue, 12 Apr 2022 02:20:35 -0700 Subject: [PATCH] session: fix potential deadlock in execStmtResult (#33848) close pingcap/tidb#33847 --- session/session.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/session/session.go b/session/session.go index 61dcad4720..ac9015b8a1 100644 --- a/session/session.go +++ b/session/session.go @@ -2061,10 +2061,11 @@ func resetCTEStorageMap(se *session) error { return errors.New("type assertion for CTEStorageMap failed") } for _, v := range storageMap { - // No need to lock IterInTbl. v.ResTbl.Lock() - defer v.ResTbl.Unlock() err1 := v.ResTbl.DerefAndClose() + // Make sure we do not hold the lock for longer than necessary. + v.ResTbl.Unlock() + // No need to lock IterInTbl. err2 := v.IterInTbl.DerefAndClose() if err1 != nil { return err1