postgres.git / summary / log / commit / refs

commit    a15d84470db8f42d3850a007dfa166d3fce5bc66
Author:   Thomas Munro <tmunro@postgresql.org>
Date:     Sat May 29 02:48:15 2021 +0000
First released in: 14.0, 11.13, 12.8, 13.4

    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


src/backend/utils/cache/typcache.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/utils/cache/typcache.c b/src/backend/utils/cache/typcache.c index 0fe06fd7c8b..65ca726c5ec 100644 --- a/src/backend/utils/cache/typcache.c +++ b/src/backend/utils/cache/typcache.c @@ -2606,7 +2606,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; [parent: a44a2b9acfdc]