Re: HOT chain validation in verify_heapam()
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Aleksander Alekseev <aleksander@timescale.com>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>, Himanshu Upadhyaya <upadhyaya.himanshu@gmail.com>, Mark Dilger <mark.dilger@enterprisedb.com>
Date: 2023-03-23T00:38:38Z
Lists: pgsql-hackers
Hi, On 2023-03-22 13:45:52 -0700, Andres Freund wrote: > On 2023-03-22 09:19:18 -0400, Robert Haas wrote: > > On Fri, Mar 17, 2023 at 8:31 AM Aleksander Alekseev > > <aleksander@timescale.com> wrote: > > > The patch needed a rebase due to a4f23f9b. PFA v12. > > > > I have committed this after tidying up a bunch of things in the test > > case file that I found too difficult to understand -- or in some cases > > just incorrect, like: > > As noticed by Andrew > https://postgr.es/m/bfa5bd2b-c0e6-9d65-62ce-97f4766b1c42%40dunslane.net and > then reproduced on HEAD by me, there's something not right here. skink / valgrind reported in a while back and found another issue: https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=skink&dt=2023-03-22%2021%3A53%3A41 ==2490364== VALGRINDERROR-BEGIN ==2490364== Conditional jump or move depends on uninitialised value(s) ==2490364== at 0x11D459F2: check_tuple_visibility (verify_heapam.c:1379) ==2490364== by 0x11D46262: check_tuple (verify_heapam.c:1812) ==2490364== by 0x11D46FDF: verify_heapam (verify_heapam.c:535) ==2490364== by 0x3D5B2C: ExecMakeTableFunctionResult (execSRF.c:235) ==2490364== by 0x3E8225: FunctionNext (nodeFunctionscan.c:95) ==2490364== by 0x3D6685: ExecScanFetch (execScan.c:133) ==2490364== by 0x3D6709: ExecScan (execScan.c:182) ==2490364== by 0x3E813A: ExecFunctionScan (nodeFunctionscan.c:270) ==2490364== by 0x3D31C4: ExecProcNodeFirst (execProcnode.c:464) ==2490364== by 0x3FF7E7: ExecProcNode (executor.h:262) ==2490364== by 0x3FFB15: ExecNestLoop (nodeNestloop.c:160) ==2490364== by 0x3D31C4: ExecProcNodeFirst (execProcnode.c:464) ==2490364== Uninitialised value was created by a stack allocation ==2490364== at 0x11D45325: check_tuple_visibility (verify_heapam.c:994) ==2490364== ==2490364== VALGRINDERROR-END ==2490364== VALGRINDERROR-BEGIN ==2490364== Conditional jump or move depends on uninitialised value(s) ==2490364== at 0x11D45AC6: check_tuple_visibility (verify_heapam.c:1379) ==2490364== by 0x11D46262: check_tuple (verify_heapam.c:1812) ==2490364== by 0x11D46FDF: verify_heapam (verify_heapam.c:535) ==2490364== by 0x3D5B2C: ExecMakeTableFunctionResult (execSRF.c:235) ==2490364== by 0x3E8225: FunctionNext (nodeFunctionscan.c:95) ==2490364== by 0x3D6685: ExecScanFetch (execScan.c:133) ==2490364== by 0x3D6709: ExecScan (execScan.c:182) ==2490364== by 0x3E813A: ExecFunctionScan (nodeFunctionscan.c:270) ==2490364== by 0x3D31C4: ExecProcNodeFirst (execProcnode.c:464) ==2490364== by 0x3FF7E7: ExecProcNode (executor.h:262) ==2490364== by 0x3FFB15: ExecNestLoop (nodeNestloop.c:160) ==2490364== by 0x3D31C4: ExecProcNodeFirst (execProcnode.c:464) ==2490364== Uninitialised value was created by a stack allocation ==2490364== at 0x11D45325: check_tuple_visibility (verify_heapam.c:994) ==2490364== Greetings, Andres Freund
Commits
-
amcheck: Generalize one of the recently-added update chain checks.
- c87aff065c33 16.0 landed
-
amcheck: Tighten up validation of redirect line pointers.
- 80d5e3a61551 16.0 landed
-
amcheck: Fix verify_heapam for tuples where xmin or xmax is 0.
- 8fd5aa76c367 14.8 landed
- 701ec5557968 15.3 landed
- e88754a1965c 16.0 landed
-
amcheck: Fix a few bugs in new update chain validation.
- 949e2e7c4f68 16.0 landed
-
Fix new test case to work on (some?) big-endian architectures.
- c75a623304bc 16.0 landed
-
Don't test HEAP_XMAX_INVALID when freezing xmax.
- 02d647bbf057 16.0 landed