Re: 048_vacuum_horizon_floor.pl hangs due to wakeup lost inside LockBufferForCleanup

Fujii Masao <masao.fujii@gmail.com>

From: Fujii Masao <masao.fujii@gmail.com>
To: Xuneng Zhou <xunengzhou@gmail.com>
Cc: Andres Freund <andres@anarazel.de>, Alexander Lakhin <exclusion@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2026-06-26T13:40:57Z
Lists: pgsql-hackers
On Wed, Jun 24, 2026 at 1:12 AM Xuneng Zhou <xunengzhou@gmail.com> wrote:
> Here is the updated patch. Please take a look.

While working on the deadlock detection issue on standby discussed in [1],
you pointed out that both the proposed patch there and this patch modify
LockBufferForCleanup(), and suggested applying this fix first.
So I took a look at it.

As far as I read the patch, it looks good to me, so I'm inclined to
commit it unless another committer on this thread would like to do so.
But any objections?

BTW, since the issue was introduced by commits 5310fac6e0f and
c75ebc657ffc, this fix only needs to be applied to master.
Is that correct?

Regards,

[1] https://postgr.es/m/44c24dcf-5710-410f-b1b6-d10b315f3d51@postgrespro.ru

-- 
Fujii Masao



Commits

  1. bufmgr: Fix race in LockBufferForCleanup()

  2. bufmgr: Use atomic sub for unpinning buffers

  3. bufmgr: Allow some buffer state modifications while holding header lock