Re: Fix bug of clearing of waitStart in ProcWakeup() - Mailing list pgsql-hackers

From Fujii Masao
Subject Re: Fix bug of clearing of waitStart in ProcWakeup()
Date
Msg-id CAHGQGwHJGgZS8iiJVUse1QraMXmYzo+5vw4jd-0MQe5h9pyWXg@mail.gmail.com
Whole thread
In response to Re: Fix bug of clearing of waitStart in ProcWakeup()  (ji xu <thanksgreed@gmail.com>)
Responses Re: Fix bug of clearing of waitStart in ProcWakeup()
List 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
astale 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



pgsql-hackers by date:

Previous
From: 陈宗志
Date:
Subject: Re: [PROPOSAL] Doublewrite Buffer as an alternative torn page protection to Full Page Write
Next
From: Andrew Dunstan
Date:
Subject: Re: pgsql: libpq: Grease the protocol by default