Re: crashes due to setting max_parallel_workers=0

From: Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>
To: Rushabh Lathia <rushabh(dot)lathia(at)gmail(dot)com>
Cc: Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>, David Rowley <david(dot)rowley(at)2ndquadrant(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, Robert Haas <robertmhaas(at)gmail(dot)com>
Subject: Re: crashes due to setting max_parallel_workers=0
Date: 2017-03-28 04:30:43
Message-ID: 5943c274-0633-106a-f4fa-117cf5d50e55@2ndquadrant.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 03/27/2017 01:40 PM, Rushabh Lathia wrote:
>
> ...
> I was doing more testing with the patch and I found one more server
> crash with the patch around same area, when we forced the gather
> merge for the scan having zero rows.
>
> create table dept ( deptno numeric, dname varchar(20);
> set parallel_tuple_cost =0;
> set parallel_setup_cost =0;
> set min_parallel_table_scan_size =0;
> set min_parallel_index_scan_size =0;
> set force_parallel_mode=regress;
> explain analyze select * from dept order by deptno;
>
> This is because for leader we don't initialize the slot into gm_slots. So
> in case where launched worker is zero and table having zero rows, we
> end up having NULL slot into gm_slots array.
>
> Currently gather_merge_clear_slots() clear out the tuple table slots for
> each
> gather merge input and returns clear slot. In the patch I modified function
> gather_merge_clear_slots() to just clear out the tuple table slots and
> always return NULL when All the queues and heap us exhausted.
>

Isn't that just another sign the code might be a bit too confusing? I
see two main issues in the code:

1) allocating 'slots' as 'nreaders+1' elements, which seems like a good
way to cause off-by-one errors

2) mixing objects with different life spans (slots for readers vs. slot
for the leader) seems like a bad idea too

I wonder how much we gain by reusing the slot from the leader (I'd be
surprised if it was at all measurable). David posted a patch reworking
this, and significantly simplifying the GatherMerge node. Why not to
accept that?

regards

--
Tomas Vondra http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tsunakawa, Takayuki 2017-03-28 04:33:13 Re: Crash on promotion when recovery.conf is renamed
Previous Message Kyotaro HORIGUCHI 2017-03-28 04:28:34 Re: free space map and visibility map