Re: ExecAppendAsyncEventWait() in REL_14_STABLE can corrupt PG_exception_stack

From: Etsuro Fujita <etsuro(dot)fujita(at)gmail(dot)com>
To: Michael Paquier <michael(at)paquier(dot)xyz>
Cc: Alexander Pyhalov <a(dot)pyhalov(at)postgrespro(dot)ru>, Pgsql Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: ExecAppendAsyncEventWait() in REL_14_STABLE can corrupt PG_exception_stack
Date: 2024-03-21 10:59:50
Message-ID: CAPmGK16VjbG05yBpB8bCVZBhq2pr60hZqYvMc7C+Lps7072wHg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sun, Feb 25, 2024 at 6:34 PM Etsuro Fujita <etsuro(dot)fujita(at)gmail(dot)com> wrote:

> > On Fri, Feb 23, 2024 at 01:21:14PM +0300, Alexander Pyhalov wrote:
> > > Recent commit 555276f8594087ba15e0d58e38cd2186b9f39f6d introduced final
> > > cleanup of node->as_eventset in ExecAppendAsyncEventWait().
> > > Unfortunately, now this function can return in the middle of TRY/FINALLY
> > > block, without restoring PG_exception_stack.
> > >
> > > We found this while working on our FDW. Unfortunately, I couldn't reproduce
> > > the issue with postgres_fdw, but it seems it is also affected.
>
> I think this would happen when FDWs configure no events; IIRC I think
> while the core allows them to do so, postgres_fdw does not do so, so
> this would never happen with it.

I was wrong; as you pointed out, this would affect postgres_fdw as
well. See commit 1ec7fca85, which is my commit, but I forgot it
completely. :-(

As I said before, the patch looks good to me. I tweaked comments in
ExecAppendAsyncEventWait() a bit. Attached is an updated patch. In
the patch I also fixed a confusing comment in a related function in
postgres_fdw.c about handling of the in-process request that might be
useless to process.

Sorry, it took more time than expected to get back to this thread.

Best regards,
Etsuro Fujita

Attachment Content-Type Size
0001-Avoid-corrupting-PG_exception_stack-in-ExecAppendAsy-v2.patch application/octet-stream 3.2 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Dave Cramer 2024-03-21 11:11:23 Re: Trying to build x86 version on windows using meson
Previous Message Amit Kapila 2024-03-21 10:55:46 Re: Introduce XID age and inactive timeout based replication slot invalidation