Re: replication cleanup code incorrect way to use of HTAB HASH_REMOVE ? - Mailing list pgsql-hackers

From Peter Smith
Subject Re: replication cleanup code incorrect way to use of HTAB HASH_REMOVE ?
Date
Msg-id CAHut+PucpZNWYrhSbJij0w4CazrEYDPm_RFUA4NoFrkUzP8wyA@mail.gmail.com
Whole thread Raw
In response to Re: replication cleanup code incorrect way to use of HTAB HASH_REMOVE ?  (Thomas Munro <thomas.munro@gmail.com>)
List pgsql-hackers
On Mon, Mar 22, 2021 at 9:21 AM Thomas Munro <thomas.munro@gmail.com> wrote:
>
> On Mon, Mar 22, 2021 at 10:50 AM Peter Smith <smithpb2250@gmail.com> wrote:
> > The real problem isn't the Assert. It's all those other usages of ent
> > disobeying the API rule: "(NB: in the case of the REMOVE action, the
> > result is a dangling pointer that shouldn't be dereferenced!)"
>
> I suppose the HASH_REMOVE case could clobber the object with 0x7f if
> CLOBBER_FREED_MEMORY is defined (typically assertion builds), or
> alternatively return some other non-NULL but poisoned pointer, so that
> problems of this ilk  blow up in early testing.

+1, but not sure if the poisoned ptr alternative can work because some
code (e.g see RemoveTargetIfNoLongerUsed function) is asserting the
return ptr actual value, not just its NULL-ness.

------
Kind Regards,
Peter Smith.
Fujitsu Australia.



pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: shared memory stats: high level design decisions: consistency, dropping
Next
From: Andres Freund
Date:
Subject: Re: replication cleanup code incorrect way to use of HTAB HASH_REMOVE ?