From: | Jeevan Chalke <jeevan(dot)chalke(at)enterprisedb(dot)com> |
---|---|
To: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: unrecognized node type while displaying a Path due to dangling pointer |
Date: | 2023-07-11 09:28:51 |
Message-ID: | CAM2+6=X5eObqiizkxGHxGF8+zzfn9mO_TjKXT_E8YrV-6Au7hw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Jul 11, 2023 at 1:19 PM Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
wrote:
> On 2023-Jul-11, Jeevan Chalke wrote:
>
> > 4. However, 2nd path was already sorted and passed as is to the
> add_path().
> > 5. add_path() decides to reject this new path on some metrics. However,
> in
> > the end, it pfree() this passed in path. It seems wrong as its references
> > do present elsewhere. For example, in the first path's parent rels path
> > list.
> > 6. So, while displaying the parent's path, we end up with these warnings.
>
> In other words, this is use-after-free, with add_path freeing the
> passed-in Path pointer, but one particular case in which this Path is
> still used afterwards.
>
> > I tried to get a fix for this but no luck so far.
>
> I proposed to add an add_path_extended() function that adds 'bool
> free_input_path' argument, and pass it false in that one place in
> create_ordered_paths.
>
Yeah, this can be a way.
However, I am thinking the other way around now. What if we first added the
unmodified input path as it is to the ordered_rel first?
If we do so, then while adding the next path, add_path() may decide to
remove the older one as the newer path is the best one. The remove_old
logic in add_path() will free the path (unsorted one), and we end up with
the same error.
And if we conditionally remove that path (remove_old logic one), then we
need to pass false in every add_path() call in create_ordered_paths().
Am I missing something?
Thanks
>
> --
> Álvaro Herrera 48°01'N 7°57'E —
> https://www.EnterpriseDB.com/
>
--
Jeevan Chalke
*Senior Staff SDE, Database Architect, and ManagerProduct Development*
From | Date | Subject | |
---|---|---|---|
Next Message | Richard Veselý | 2023-07-11 09:31:06 | RE: BUG #18016: REINDEX TABLE failure |
Previous Message | Andrey Lepikhov | 2023-07-11 08:47:45 | Re: POC, WIP: OR-clause support for indexes |