From: | Noah Misch <noah(at)leadboat(dot)com> |
---|---|
To: | Alexander Lakhin <exclusion(at)gmail(dot)com> |
Cc: | Nitin Motiani <nitinmotiani(at)google(dot)com>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, Robert Haas <robertmhaas(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Smolkin Grigory <smallkeen(at)gmail(dot)com>, Michael Paquier <michael(at)paquier(dot)xyz> |
Subject: | Re: race condition in pg_class |
Date: | 2024-10-22 03:52:15 |
Message-ID: | 20241022035215.3e.nmisch@google.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Oct 21, 2024 at 10:00:00PM +0300, Alexander Lakhin wrote:
> Please look at an anomaly introduced with a07e03fd8.
> With the attached modification for intra-grant-inplace.spec, running this
> test triggers a Valgrind-detected error for me:
> ==00:00:00:09.624 319033== Conditional jump or move depends on uninitialised value(s)
> ==00:00:00:09.624 319033== at 0x25D120: DoesMultiXactIdConflict (heapam.c:7373)
> ==00:00:00:09.624 319033== by 0x25B45A: heap_inplace_lock (heapam.c:6265)
> ==00:00:00:09.624 319033== by 0x27D8CB: systable_inplace_update_begin (genam.c:867)
> ==00:00:00:09.624 319033== by 0x33F717: index_update_stats (index.c:2856)
> ==00:00:00:09.624 319033== by 0x33FEE2: index_build (index.c:3106)
> ==00:00:00:09.625 319033== by 0x33C7D3: index_create (index.c:1276)
> ==00:00:00:09.625 319033== by 0x451000: DefineIndex (indexcmds.c:1216)
> ==00:00:00:09.625 319033== by 0x48D091: ATExecAddIndex (tablecmds.c:9156)
> ==00:00:00:09.625 319033== by 0x483F8E: ATExecCmd (tablecmds.c:5302)
> ==00:00:00:09.625 319033== by 0x483877: ATRewriteCatalogs (tablecmds.c:5186)
> ==00:00:00:09.625 319033== by 0x482B9A: ATController (tablecmds.c:4741)
> ==00:00:00:09.625 319033== by 0x4827A1: AlterTable (tablecmds.c:4387)
> ==00:00:00:09.625 319033==
Thanks.
> Perhaps current_is_member in heap_inplace_lock() should be initialized
> before the DoesMultiXactIdConflict() call as in other places...
heap_inplace_lock() ignores current_is_member after computing it, so let's
just pass NULL, as attached.
Attachment | Content-Type | Size |
---|---|---|
inplace129-DoesMultiXactIdConflict-v1.patch | text/plain | 2.5 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Jay | 2024-10-22 04:32:29 | Re: cost delay brainstorming |
Previous Message | Tender Wang | 2024-10-22 02:56:34 | Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails |