From: | Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> |
---|---|
To: | Peter Smith <smithpb2250(at)gmail(dot)com> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: replication cleanup code incorrect way to use of HTAB HASH_REMOVE ? |
Date: | 2021-03-22 02:27:15 |
Message-ID: | CAA4eK1LctaRqyau3R24rbNdKGLZoVOpnqFS8jF4n51DMyVGpAg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Mar 22, 2021 at 3:20 AM Peter Smith <smithpb2250(at)gmail(dot)com> wrote:
>
> On Sun, Mar 21, 2021 at 8:54 PM Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> wrote:
> >
> > On Sat, Mar 20, 2021 at 12:54 PM Peter Smith <smithpb2250(at)gmail(dot)com> wrote:
> > >
> > > PSA my patch to correct this by firstly doing a HASH_FIND, then only
> > > HASH_REMOVE after we've finished using the ent.
> > >
> >
> > Why can't we keep using HASH_REMOVE as it is but get the output (entry
> > found or not) in the last parameter of hash_search API and then
> > perform Assert based on that? See similar usage in reorderbuffer.c and
> > rewriteheap.c.
> >
>
> Changing the Assert doesn't do anything to fix the problem as
> described, i.e. dereferencing of ent after the HASH_REMOVE.
>
> 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!)"
>
Right, that is a problem. I see that your patch will fix it. Thanks.
--
With Regards,
Amit Kapila.
From | Date | Subject | |
---|---|---|---|
Next Message | Yugo NAGATA | 2021-03-22 02:29:25 | Re: Columns correlation and adaptive query optimization |
Previous Message | Fujii Masao | 2021-03-22 02:22:07 | Re: Wrong statistics for size of XLOG_SWITCH during pg_waldump. |