public inbox for [email protected]
help / color / mirror / Atom feedFrom: Tom Lane <[email protected]>
To: Andres Freund <[email protected]>
Cc: Hao Zhang <[email protected]>
Cc: [email protected]
Subject: Re: [PATCH] plpython function causes server panic
Date: Fri, 01 Dec 2023 20:46:26 -0500
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <CALY6Dr-2yLVeVPhNMhuBnRgOZo1UjoTETgtKBx1B2gUi8yy+3g@mail.gmail.com>
<[email protected]>
<[email protected]>
Andres Freund <[email protected]> writes:
> On 2023-12-01 20:04:15 -0500, Tom Lane wrote:
>> Thanks for the report! I see the problem is that we're not expecting
>> BeginInternalSubTransaction to fail. However, I'm not sure I like
>> this solution, mainly because it's only covering a fraction of the
>> problem. There are similarly unsafe usages in plperl, pltcl, and
>> very possibly a lot of third-party PLs. I wonder if there's a way
>> to deal with this issue without changing these API assumptions.
> There are plenty other uses, but it's not clear to me that they are similarly
> affected by BeginInternalSubTransaction raising an error? It e.g. doesn't
> immediately look like plperl's usage would be affected in a similar way?
Why not? We'd be longjmp'ing out from inside the Perl interpreter.
Maybe Perl is so robust it doesn't care, but I'd be surprised if this
can't break it. The same for Tcl.
I think that plpgsql indeed doesn't care because it has no non-PG
interpreter state to worry about. But it's in the minority I fear.
regards, tom lane
view thread (4+ messages)
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected], [email protected]
Subject: Re: [PATCH] plpython function causes server panic
In-Reply-To: <[email protected]>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox