Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 82248f2

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 40a05cf commit 82248f2

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/backend/utils/cache/typcache.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2617,7 +2617,7 @@ find_or_make_matching_shared_tupledesc(TupleDesc tupdesc)
26172617
Assert(record_table_entry->key.shared);
26182618
result = (TupleDesc)
26192619
dsa_get_address(CurrentSession->area,
2620-
record_table_entry->key.shared);
2620+
record_table_entry->key.u.shared_tupdesc);
26212621
Assert(result->tdrefcount == -1);
26222622

26232623
return result;

0 commit comments

Comments
 (0)