| From: | Thomas Munro <thomas(dot)munro(at)gmail(dot)com> | 
|---|---|
| To: | Jerry Sievers <gsievers19(at)comcast(dot)net> | 
| Cc: | Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com> | 
| Subject: | Re: SegFault on 9.6.14 | 
| Date: | 2019-07-17 03:19:18 | 
| Message-ID: | CA+hUKGJyqDp9FZSHLTjiNMcz-c6=RdStB+UjVZsR8wfHnJXy8Q@mail.gmail.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
On Wed, Jul 17, 2019 at 12:57 PM Thomas Munro <thomas(dot)munro(at)gmail(dot)com> wrote:
> On Wed, Jul 17, 2019 at 12:44 PM Thomas Munro <thomas(dot)munro(at)gmail(dot)com> wrote:
> > > #11 0x000055666e0359df in ExecShutdownNode (node=node(at)entry=0x55667033a6c8)
> > >     at /build/postgresql-9.6-5O8OLM/postgresql-9.6-9.6.14/build/../src/backend/executor/execProcnode.c:830
> > > #12 0x000055666e04d0ff in ExecLimit (node=node(at)entry=0x55667033a428)
> > >     at /build/postgresql-9.6-5O8OLM/postgresql-9.6-9.6.14/build/../src/backend/executor/nodeLimit.c:139
> >
> > https://github.com/postgres/postgres/blob/REL9_6_STABLE/src/backend/executor/nodeLimit.c#L139
> >
> > Limit thinks it's OK to "shut down" the subtree, but if you shut down a
> > Gather node you can't rescan it later because it destroys its shared
> > memory.  Oops.  Not sure what to do about that yet.
>
> CCing Amit and Robert, authors of commits 19df1702 and 69de1718.
Here's a repro (I'm sure you can find a shorter one, this one's hacked
up from join_hash.sql, basically just adding LIMIT):
create table join_foo as select generate_series(1, 3000) as id,
'xxxxx'::text as t;
alter table join_foo set (parallel_workers = 0);
create table join_bar as select generate_series(0, 10000) as id,
'xxxxx'::text as t;
alter table join_bar set (parallel_workers = 2);
set parallel_setup_cost = 0;
set parallel_tuple_cost = 0;
set max_parallel_workers_per_gather = 2;
set enable_material = off;
set enable_mergejoin = off;
set work_mem = '1GB';
select count(*) from join_foo
    left join (select b1.id, b1.t from join_bar b1 join join_bar b2
using (id) limit 1000) ss
    on join_foo.id < ss.id + 1 and join_foo.id > ss.id - 1;
-- 
Thomas Munro
https://enterprisedb.com
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Ian Barwick | 2019-07-17 03:29:43 | [PATCH] Make configuration file "include" directive handling more robust | 
| Previous Message | Michael Paquier | 2019-07-17 03:18:19 | Re: refactoring - share str2*int64 functions |