Re: [Bug] Usage of stale dead_items pointer in parallel vacuum - Mailing list pgsql-bugs

From Richard Guo
Subject Re: [Bug] Usage of stale dead_items pointer in parallel vacuum
Date
Msg-id CAMbWs4-ExA3HgnUJngzFJ+W-79hazKpgF0v4MLQw8G6=A3Xk7w@mail.gmail.com
Whole thread Raw
In response to [Bug] Usage of stale dead_items pointer in parallel vacuum  (Kevin Oommen Anish <kevin.o@zohocorp.com>)
Responses Re: [Bug] Usage of stale dead_items pointer in parallel vacuum
List pgsql-bugs
On Thu, Oct 2, 2025 at 12:56 AM Kevin Oommen Anish <kevin.o@zohocorp.com> wrote:
> Failed regression:
> CREATE TABLE pvactst2 (i INT) WITH (autovacuum_enabled = off);
> INSERT INTO pvactst2 SELECT generate_series(1, 1000);
> CREATE INDEX ON pvactst2 (i);
> CREATE INDEX ON pvactst2 (i);
> SET min_parallel_index_scan_size to 0;
> SET maintenance_work_mem TO 64;
> INSERT INTO pvactst2 SELECT generate_series(1, 1000);
> DELETE FROM pvactst2 WHERE i < 1000;
> VACUUM (PARALLEL 2) pvactst2;

I can reproduce the issue and confirm that your patch fixes it.  I
didn't use your custom malloc allocator but instead applied a
redundant palloc0 for TidStore in TidStoreCreateShared(), hoping to
get a different chunk of memory (haha).

@@ -212,6 +212,7 @@ TidStoreCreateShared(size_t max_bytes, int tranche_id)
        size_t          dsa_init_size = DSA_DEFAULT_INIT_SEGMENT_SIZE;
        size_t          dsa_max_size = DSA_MAX_SEGMENT_SIZE;

+       ts = palloc0(sizeof(TidStore));
        ts = palloc0(sizeof(TidStore));

- Richard



pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #19062: PostgreSQL 12.22 does not compile because of conflicting types for CollationCreate
Next
From: John Naylor
Date:
Subject: Re: [Bug] Usage of stale dead_items pointer in parallel vacuum