Re: PANIC in heap_delete during ALTER TABLE

Jeff Davis <pgsql@j-davis.com>

From: Jeff Davis <pgsql@j-davis.com>
To: Peter Geoghegan <pg@bowt.ie>
Cc: Robins Tharakan <tharakan@gmail.com>, PostgreSQL mailing lists <pgsql-bugs@postgresql.org>
Date: 2022-09-15T22:25:30Z
Lists: pgsql-bugs
On Thu, 2022-09-08 at 10:30 -0700, Jeff Davis wrote:
> I wasn't able to repro on 13, but Robins' report indicates that it's
> possible.

I looked again, and I still can't find a way to repro on 13,
specifically the sha1 you mentioned (7cdd0c2d7c).

heap_delete() lets go of its exclusive lock (but not pin) in a couple
places (just like on master). But it looks like all the places that set
PD_ALL_VISIBLE are doing so under a cleanup lock (unlike master), which
means that it can't change for the duration of heap_delete().

I'm hesitant to commit anything here if I can't repro the problem on
13. I must be missing something.

Regards,
	Jeff Davis




Commits

  1. Fix race condition where heap_delete() fails to pin VM page.

  2. Avoid improbable PANIC during heap_update.

  3. Remove tupgone special case from vacuumlazy.c.