aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Munro <tmunro@postgresql.org>2021-05-29 14:48:15 +1200
committerThomas Munro <tmunro@postgresql.org>2021-05-29 15:12:34 +1200
commitb1d6538903504904db44679355ac109aeda01737 (patch)
tree53942097e7878464f28c6e91e71f58e97817d877 /src
parentd69fcb9caef1ac1f38241645d4fb9f7e0ce02a70 (diff)
downloadpostgresql-b1d6538903504904db44679355ac109aeda01737.tar.gz
postgresql-b1d6538903504904db44679355ac109aeda01737.zip
Fix race condition when sharing tuple descriptors.
Parallel query processes that called BlessTupleDesc() for identical tuple descriptors at the same moment could crash. There was code to handle that rare case, but it dereferenced a bogus DSA pointer. Repair. Back-patch to 11, where commit cc5f8136 added support for sharing tuple descriptors in parallel queries. Reported-by: Eric Thinnes <e.thinnes@gmx.de> Discussion: https://postgr.es/m/99aaa2eb-e194-bf07-c29a-1a76b4f2bcf9%40gmx.de
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/cache/typcache.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/backend/utils/cache/typcache.c b/src/backend/utils/cache/typcache.c
index 35c8cf7b244..de96e96c8fd 100644
--- a/src/backend/utils/cache/typcache.c
+++ b/src/backend/utils/cache/typcache.c
@@ -2822,7 +2822,7 @@ find_or_make_matching_shared_tupledesc(TupleDesc tupdesc)
Assert(record_table_entry->key.shared);
result = (TupleDesc)
dsa_get_address(CurrentSession->area,
- record_table_entry->key.shared);
+ record_table_entry->key.u.shared_tupdesc);
Assert(result->tdrefcount == -1);
return result;