BUG #15554: Broken pipe when doing a COPY of a parallel query

From: PG Bug reporting form <noreply(at)postgresql(dot)org>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Cc: luis(dot)carril(at)swarm64(dot)com
Subject: BUG #15554: Broken pipe when doing a COPY of a parallel query
Date: 2018-12-17 08:57:16
Message-ID: 15554-04979fa61a082393@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 15554
Logged by: Luis M Carril
Email address: luis(dot)carril(at)swarm64(dot)com
PostgreSQL version: 10.6
Operating system: Ubuntu 18.04
Description:

Hi,
when performing a COPY TO operation with the result of a parallel query a
'Broken Pipe' error is returned

Steps to reproduce:
create table a(u int);
insert into a select * from generate_series(1,1000000); -- enough data
to get a parallel plan
copy ( select sum(u) from a) to program 'ls'; -- the SELECT has a
gather node
ERROR: could not close pipe to external command: Broken pipe

Alternatively we can use the force_parallel_mode to reproduce it:
set force_parallel_mode to on;
copy ( select 1) to program 'ls'; -- this SELECT also has a gather
node
ERROR: could not close pipe to external command: Broken pipe

Note that there is no broken pipe if there is no Gather node:
set force_parallel_mode to on;
copy ( select 1) to program 'ls';
COPY 1

Pg Version:
version


-----------------------------------------------------------------------------------------------
PostgreSQL 10.6 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu
8.2.0-7ubuntu1) 8.2.0, 64-bit

Notes:
The pclose call in FreeDesc (called by ClosePipeStream) is returning an
EINTR, which seems to trigger because during the wait several SIGUSR1 due to
the Gather node are triggered, which produces a SIGPIPE.

I saw in the discussion of BUG #15449
(https://www.postgresql.org/message-id/flat/15449-1cf737dd5929450e%40postgresql.org)
a related comments to ClosePipeToProgram and SIGPIPE, I tried the last
submitted patch and the error still shows up.

In the alpine Postgres docker image (postgres:10-alpine) the error does
not manifest (probably because uses musl as C library and pclose behaves
differently):
version


---------------------------------------------------------------------------------------
PostgreSQL 10.6 on x86_64-pc-linux-musl, compiled by gcc (Alpine
6.4.0) 6.4.0, 64-bit

Cheers,
Luis M Carril

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message PG Bug reporting form 2018-12-17 09:10:12 BUG #15555: Syntax errors when using the COMMENT command in plpgsql and a "comment" variable
Previous Message amul sul 2018-12-17 08:30:48 Re: ALTER INDEX ... ALTER COLUMN not present in dump