Обсуждение: BUG #13579: Server crashes after executing plpythonu function
The following bug has been logged on the website:
Bug reference: 13579
Logged by: PaweÅ Michalak
Email address: ppmichalakk@gmail.com
PostgreSQL version: 9.4.4
Operating system: Debian 4.6.3-14
Description:
[pmichalak@asdasd ~] $ psql
psql (9.4.4)
Type "help" for help.
pmichalak=# create function a() returns setof record as $$
return { 'a': 2, 'b': 3 }
$$ language plpythonu;
CREATE FUNCTION
pmichalak=# select * from a() as (b integer, c integer);
ERROR: input of anonymous composite types is not implemented
CONTEXT: while creating return value
PL/Python function "a"
pmichalak=# select * from a() as (b integer, c integer);
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.
Server log:
STATEMENT: select * from a() as (b integer, c integer);
ERROR: syntax error at or near "," at character 30
STATEMENT: select * from q() as (b integer, c integer);
LOG: server process (PID 14767) was terminated by signal 11: Segmentation
fault
DETAIL: Failed process was running: select * from a() as (b integer, c
integer);
LOG: terminating any other active server processes
ppmichalakk@gmail.com writes:
> pmichalak=# create function a() returns setof record as $$
> return { 'a': 2, 'b': 3 }
> $$ language plpythonu;
> CREATE FUNCTION
> pmichalak=# select * from a() as (b integer, c integer);
> ERROR: input of anonymous composite types is not implemented
> CONTEXT: while creating return value
> PL/Python function "a"
> pmichalak=# select * from a() as (b integer, c integer);
> server closed the connection unexpectedly
> This probably means the server terminated abnormally
> before or while processing the request.
> The connection to the server was lost. Attempting reset: Failed.
Hm. Looks like we're trying to free already-freed memory here:
#2 0x00000000007babc9 in ExceptionalCondition (
conditionName=<value optimized out>, errorType=<value optimized out>,
fileName=<value optimized out>, lineNumber=<value optimized out>)
at assert.c:54
#3 0x00000000007dc292 in pfree (pointer=<value optimized out>) at mcxt.c:920
#4 0x00007fbde21a971f in PLy_free (ptr=<value optimized out>)
at plpy_util.c:53
#5 0x00007fbde21a7ad4 in PLy_output_tuple_funcs (arg=0x2cd2a68,
desc=0x2cdb240) at plpy_typeio.c:208
#6 0x00007fbde21a8b72 in PLy_output_record_funcs (arg=0x2cd2a68,
desc=0x2cdb240) at plpy_typeio.c:277
#7 0x00007fbde21a25df in PLy_function_build_args (fcinfo=0x7ffd7f54aa10,
proc=0x2cd2a48) at plpy_exec.c:419
#8 0x00007fbde21a279e in PLy_exec_function (fcinfo=0x7ffd7f54aa10,
proc=0x2cd2a48) at plpy_exec.c:60
#9 0x00007fbde21a3351 in plpython_call_handler (fcinfo=0x7ffd7f54aa10)
at plpy_main.c:232
#10 0x00000000005d96bb in ExecMakeTableFunctionResult (funcexpr=0x2cdaa28,
econtext=0x2cda5b8, argContext=<value optimized out>,
expectedDesc=0x2cdb240, randomAccess=0 '\000') at execQual.c:2189
Thanks for the report!
regards, tom lane
ppmichalakk@gmail.com writes:
> pmichalak=# create function a() returns setof record as $$
> return { 'a': 2, 'b': 3 }
> $$ language plpythonu;
> CREATE FUNCTION
> pmichalak=# select * from a() as (b integer, c integer);
> ERROR: input of anonymous composite types is not implemented
> CONTEXT: while creating return value
> PL/Python function "a"
> pmichalak=# select * from a() as (b integer, c integer);
> server closed the connection unexpectedly
> This probably means the server terminated abnormally
> before or while processing the request.
> The connection to the server was lost. Attempting reset: Failed.
Fixed, thanks for the report!
regards, tom lane