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
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;