Re: Fix bug of clearing of waitStart in ProcWakeup()
Fujii Masao <masao.fujii@gmail.com>
From: Fujii Masao <masao.fujii@gmail.com>
To: ji xu <thanksgreed@gmail.com>
Cc: Chao Li <li.evan.chao@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-02-24T15:41:03Z
Lists: pgsql-hackers
On Tue, Feb 24, 2026 at 4:31 PM ji xu <thanksgreed@gmail.com> wrote: > > > Chao Li <li.evan.chao@gmail.com> 于2026年2月24日周二 14:29写道: >> >> Since this function is clearly operating on the parameter proc, the only statement that touches MyProc looks suspicious. It should reset proc->waitStart, not MyProc->waitStart. >> >> As written, it will incorrectly clear the caller’s waitStart instead of the awakened backend’s, potentially leaving a stale waitStart value in the target PGPROC. Thanks for the report! You’re right. This leaves proc->waitStart unreset for a backend that has woken up from a lock wait. In practice this doesn't seem to cause user-visible issues, since pg_locks.waitstart is reported as NULL when pg_locks.granted is true, regardless of proc->waitStart. That said, the behavior is incorrect, so I'm feeling inclined to backpatch a fix. Thoughts? > The fix looks correct to me. I applied it locally and build and "make check" passed from my side. Sounds good to me. Regards, -- Fujii Masao
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix ProcWakeup() resetting wrong waitStart field.
- 5d2dec77efaf 14.23 landed
- 74ee3e9e7365 15.18 landed
- b993706787d0 16.14 landed
- f72c92a7f945 17.10 landed
- 0d3be0501784 18.4 landed
- 70f470314cb4 19 (unreleased) landed