From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@anarazel.de>
Cc: Julien Rouhaud <julien.rouhaud@dalibo.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Subject: Re: segfault in HEAD when too many nested functions call
Date: Wed, 26 Jul 2017 16:28:38 -0400
Message-ID: <25311.1501100918@sss.pgh.pa.us> (raw)
In-Reply-To: <20170726195832.sxhv4jsknasdmmvv@alap3.anarazel.de>
References: <12302.1500132157@sss.pgh.pa.us>
<20170717072629.dqykbsot2irdob7c@alap3.anarazel.de>
<20170717145710.cm32m4yn555hsoxd@alap3.anarazel.de>
<6687.1500411223@sss.pgh.pa.us>
<20170721114023.fj6cvr6og46yogei@alap3.anarazel.de>
<19899.1500682674@sss.pgh.pa.us>
<20170724161954.gbqswhukk7c4lygt@alap3.anarazel.de>
<32759.1500917278@sss.pgh.pa.us>
<20170726012641.bmhfcp5ajpudihl6@alap3.anarazel.de>
<20855.1501095817@sss.pgh.pa.us>
<20170726195832.sxhv4jsknasdmmvv@alap3.anarazel.de>
List-Unsubscribe: <mailto:majordomo@postgresql.org?body=unsub%20pgsql-hackers>
Andres Freund <andres@anarazel.de> writes:
> On 2017-07-26 15:03:37 -0400, Tom Lane wrote:
>> Hm, that seems kinda backwards to me; I was envisioning the checks
>> moving to the callees not the callers. I think it'd end up being
>> about the same number of occurrences of CHECK_FOR_INTERRUPTS(),
>> and there would be less of a judgment call about where to put them.
> Hm, that seems a bit riskier - easy to forget one of the places where we
> might need a CFI().
I would argue the contrary. If we put a CFI at the head of each node
execution function, then it's just boilerplate that you copy-and-paste
when you invent a new node type. The way you've coded it here, it
seems to involve a lot of judgment calls. That's very far from being
copy and paste, and the more different it looks from one node type
to another, the easier it will be to forget it.
> We certainly are missing a bunch of them in various nodes
It's certainly possible that there are long-running loops not involving
any ExecProcNode recursion at all, but that would be a bug independent
of this issue. The CFI in ExecProcNode itself can be replaced exactly
either by asking all callers to do it, or by asking all callees to do it.
I think the latter is going to be more uniform and harder to screw up.
regards, tom lane
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
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: pgsql-hackers@postgresql.org
Cc: tgl@sss.pgh.pa.us, andres@anarazel.de, julien.rouhaud@dalibo.com
Subject: Re: segfault in HEAD when too many nested functions call
In-Reply-To: <25311.1501100918@sss.pgh.pa.us>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox