Re: Server crash on UPDATE after savepoint rollback when the row is locked by the same transaction (Assert HEAP_XMAX_IS_LOCKED_ONLY in heap_update)

From: Andrey Rachitskiy <pl0h0yp1(at)gmail(dot)com>
To: RekGRpth <rekgrpth(at)gmail(dot)com>
Cc: PostgreSQL mailing lists <pgsql-bugs(at)lists(dot)postgresql(dot)org>
Subject: Re: Server crash on UPDATE after savepoint rollback when the row is locked by the same transaction (Assert HEAP_XMAX_IS_LOCKED_ONLY in heap_update)
Date: 2026-11-02 08:51:42
Message-ID: CAB8bMiuUHvBuY=Bm0LjwAbFWKk7tr69t1XpYjAVHytnKp2gn9g@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

пн, 2 нояб. 2026 г. в 12:14, RekGRpth <rekgrpth(at)gmail(dot)com>:

> Suggested fix
>
> In MultiXactIdExpand, prune dead members ("still of interest") before the
> same-status early return, and only return the existing MultiXactId
> unchanged
> when nothing was pruned; otherwise recreate the multi from the remaining
> members. A patch against master is attached; I verified it fixes both the
> repro above and the pg_task scenario on 19rc1, with the multixact now
> created
> without the aborted updater (HEAP_XMAX_LOCK_ONLY set as expected).
>

Hi Georgy!

Thanks for the report.

v2 is attached. A few comments were adjusted, and the test was added
to src/test/isolation/isolation_schedule.

Attachment Content-Type Size
v2-0001-Fix-MultiXactIdExpand-reusing-a-multixact-with-dead-members.patch text/x-patch 8.0 KB

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message apex-security-research 2026-11-02 09:06:24 contrib/cube: NaN coordinates break the btree equivalence relation, so UNIQUE rejects distinct values and ORDER BY is unstable
Previous Message ssye1697 2026-11-02 07:55:44 Correction: 17.11/18.6 slot_getsomeattrs_int crash is not a d260d7d backpatch gap; request for triage direction