Skip to content

Commit b1d6538

Browse files
committed
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
1 parent d69fcb9 commit b1d6538

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/backend/utils/cache/typcache.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -2822,7 +2822,7 @@ find_or_make_matching_shared_tupledesc(TupleDesc tupdesc)
28222822
Assert(record_table_entry->key.shared);
28232823
result = (TupleDesc)
28242824
dsa_get_address(CurrentSession->area,
2825-
record_table_entry->key.shared);
2825+
record_table_entry->key.u.shared_tupdesc);
28262826
Assert(result->tdrefcount == -1);
28272827

28282828
return result;

0 commit comments

Comments
 (0)