From 1cf44ab0f7bfc9d5221ce19f162b3e07ab42c567 Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@gmail.com>
Date: Tue, 11 May 2021 11:11:37 +1200
Subject: [PATCH 2/3] Don't access a local locks after freeing them.

---
 src/backend/storage/lmgr/lock.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c
index 108b4d9023..8642afc275 100644
--- a/src/backend/storage/lmgr/lock.c
+++ b/src/backend/storage/lmgr/lock.c
@@ -1390,15 +1390,15 @@ RemoveLocalLock(LOCALLOCK *locallock)
 		SpinLockRelease(&FastPathStrongRelationLocks->mutex);
 	}
 
-	if (!hash_search(LockMethodLocalHash,
-					 (void *) &(locallock->tag),
-					 HASH_REMOVE, NULL))
-		elog(WARNING, "locallock table corrupted");
-
 	/*
 	 * Indicate that the lock is released for certain types of locks
 	 */
 	CheckAndSetLockHeld(locallock, false);
+
+	if (!hash_search(LockMethodLocalHash,
+					 (void *) &(locallock->tag),
+					 HASH_REMOVE, NULL))
+		elog(WARNING, "locallock table corrupted");
 }
 
 /*
-- 
2.30.2

