On Mon, Apr 13, 2020 at 10:59 PM Kamil Jońca <kjonca@fastmail.com> wrote:
> #2 0x000055f675632af4 in ExceptionalCondition (conditionName=conditionName@entry=0x55f6758523f8
"!(result->tdrefcount== -1)", errorType=errorType@entry=0x55f67568a016 "FailedAssertion",
> fileName=fileName@entry=0x55f675852008
"/build/postgresql-12-kUaQt8/postgresql-12-12.2/build/../src/backend/utils/cache/typcache.c",
lineNumber=lineNumber@entry=2621)at ./build/../src/backend/utils/error/assert.c:54
> #3 0x000055f6756309ae in find_or_make_matching_shared_tupledesc (tupdesc=<optimized out>) at
./build/../src/backend/utils/cache/typcache.c:2621
This code is asserting that a TupleDesc that it found in
CurrentSession->shared_record_table is not reference counted. That's
because TupleDesc objects stored there stick around for the lifetime
of the session (= leader backend lifetime). So the question is ...
how did that thing manage to get some other value there, and what was
it? What does "frame 3", "print *result" show?