Re: psql - add SHOW_ALL_RESULTS option - Mailing list pgsql-hackers

From Andres Freund
Subject Re: psql - add SHOW_ALL_RESULTS option
Date
Msg-id 20220113054433.wdjhidtm7gvyhfts@alap3.anarazel.de
Whole thread Raw
In response to Re: psql - add SHOW_ALL_RESULTS option  (Fabien COELHO <coelho@cri.ensmp.fr>)
Responses Re: psql - add SHOW_ALL_RESULTS option
List pgsql-hackers
Hi,

On 2022-01-08 19:32:36 +0100, Fabien COELHO wrote:
> Attached v13 where the crash test is moved to tap.

The reason this test constantly fails on cfbot windows is a use-after-free
bug.

I figured that out in the context of another thread, so the debugging is
there:

https://postgr.es/m/20220113054123.ib4khtafgq34lv4z%40alap3.anarazel.de
> Ah, I see the bug. It's a use-after-free introduced in the patch:
>
> SendQueryAndProcessResults(const char *query, double *pelapsed_msec,
>     bool is_watch, const printQueryOpt *opt, FILE *printQueryFout, bool *tx_ended)
> 
> 
> ...
>     /* first result */
>     result = PQgetResult(pset.db);
> 
> 
>     while (result != NULL)
> 
> 
> ...
>         if (!AcceptResult(result, false))
>         {
> ...
>             ClearOrSaveResult(result);
>             success = false;
> 
> 
>             /* and switch to next result */
>             result_status = PQresultStatus(result);
>             if (result_status == PGRES_COPY_BOTH ||
>                 result_status == PGRES_COPY_OUT ||
>                 result_status == PGRES_COPY_IN)
> 
> 
> So we called ClearOrSaveResult() with did a PQclear(), and then we go and call
> PQresultStatus().

Greetings,

Andres Freund



pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: Windows vs recovery tests
Next
From: Tom Lane
Date:
Subject: Re: Custom Operator for citext LIKE predicates question