Re: pgsql: Use slots in trigger infrastructure, except for the actualinvoc - Mailing list pgsql-committers

From Andrew Dunstan
Subject Re: pgsql: Use slots in trigger infrastructure, except for the actualinvoc
Date
Msg-id b7726773-a7c0-00cc-533f-8efe30af9031@2ndQuadrant.com
Whole thread Raw
In response to Re: pgsql: Use slots in trigger infrastructure, except for theactual invoc  (Andres Freund <andres@anarazel.de>)
Responses Re: pgsql: Use slots in trigger infrastructure, except for theactual invoc  (Andres Freund <andres@anarazel.de>)
List pgsql-committers
On 2/27/19 1:22 AM, Andres Freund wrote:
> Hi,
>
> On 2019-02-27 04:41:28 +0000, Andres Freund wrote:
>> Use slots in trigger infrastructure, except for the actual invocation.
> Andrew, I see that this broke crake's redis_fdw check. I see it actually
> fails with an error, rather than fail to build. Could you perhaps enable
> generating backtraces?


Not sure why it should fail to build.


Backtraces should be enabled in the animal - I will investigate why
we're not getting them here. Meanwhile, here's one for this problem:


Core was generated by `postgres: buildfarm contrib_regression_redis_fdw [l'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x000000000086ab23 in GetMemoryChunkContext (pointer=0x0) at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/include/utils/memutils.h:127
127        context = *(MemoryContext *) (((char *) pointer) -
sizeof(void *));
Missing separate debuginfos, use: dnf debuginfo-install
cyrus-sasl-lib-2.1.27-0.3rc7.fc29.x86_64 glibc-2.28-17.fc29.x86_64
hiredis-0.13.3-9.fc29.x86_64 keyutils-libs-1.5.10-8.fc29.x86_64
krb5-libs-1.16.1-21.fc29.x86_64 libcom_err-1.44.3-1.fc29.x86_64
libselinux-2.8-4.fc29.x86_64 libxcrypt-4.2.3-1.fc29.x86_64
libxml2-2.9.8-4.fc29.x86_64 openldap-2.4.46-9.fc29.x86_64
openssl-libs-1.1.1-3.fc29.x86_64 pcre2-10.32-3.fc29.x86_64
xz-libs-5.2.4-3.fc29.x86_64 zlib-1.2.11-14.fc29.x86_64
(gdb) bt
#0  0x000000000086ab23 in GetMemoryChunkContext (pointer=0x0) at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/include/utils/memutils.h:127
#1  pfree (pointer=0x0) at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/utils/mmgr/mcxt.c:1033
#2  0x0000000000486f85 in heap_freetuple (htup=<optimized out>) at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/access/common/heaptuple.c:1340
#3  0x0000000000607821 in tts_buffer_heap_clear (slot=0x2731300) at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/executor/execTuples.c:653
#4  0x0000000000607bbe in ExecClearTuple (slot=0x2731300) at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/include/executor/tuptable.h:425
#5  ExecResetTupleTable (tupleTable=0x2730638, shouldFree=false) at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/executor/execTuples.c:1147
#6  0x00000000005fe6c9 in ExecEndPlan (estate=0x272f890,
planstate=<optimized out>) at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/executor/execMain.c:1558
#7  standard_ExecutorEnd (queryDesc=0x2683770) at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/executor/execMain.c:494
#8  0x000000000073f925 in ProcessQuery (plan=<optimized out>,
sourceText=0x2664390 "delete from db15_w_1key_scalar;", params=0x0,
queryEnv=0x0, dest=0x274e470, completionTag=0x7fff9a230180 "DELETE 1")
    at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/tcop/pquery.c:204
#9  0x000000000073fb00 in PortalRunMulti (portal=portal@entry=0x26c9510,
isTopLevel=isTopLevel@entry=true,
setHoldSnapshot=setHoldSnapshot@entry=false, dest=dest@entry=0x274e470,
altdest=altdest@entry=0x274e470,
    completionTag=completionTag@entry=0x7fff9a230180 "DELETE 1") at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/tcop/pquery.c:1283
#10 0x00000000007405c1 in PortalRun (portal=portal@entry=0x26c9510,
count=count@entry=9223372036854775807, isTopLevel=isTopLevel@entry=true,
run_once=run_once@entry=true, dest=dest@entry=0x274e470,
altdest=altdest@entry=0x274e470, completionTag=0x7fff9a230180 "DELETE 1")
    at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/tcop/pquery.c:796
#11 0x000000000073c84f in exec_simple_query (query_string=0x2664390
"delete from db15_w_1key_scalar;") at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/tcop/postgres.c:1215
#12 0x000000000073df69 in PostgresMain (argc=<optimized out>,
argv=argv@entry=0x268d760, dbname=<optimized out>, username=<optimized
out>) at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/tcop/postgres.c:4256
#13 0x00000000006d13c6 in BackendRun (port=0x2686cd0, port=0x2686cd0) at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/postmaster/postmaster.c:4382
#14 BackendStartup (port=0x2686cd0) at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/postmaster/postmaster.c:4073
#15 ServerLoop () at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/postmaster/postmaster.c:1703
#16 0x00000000006d21e5 in PostmasterMain (argc=argc@entry=3,
argv=argv@entry=0x265ca50) at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/postmaster/postmaster.c:1376
#17 0x000000000047dade in main (argc=3, argv=0x265ca50) at
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/main/main.c:228



Here's the relevant portion of the test script, leading up to the
failing statement:


create foreign table db15_w_1key_scalar(val text)
       server localredis
       options (singleton_key 'w_1key_scalar', database '15');

select * from db15_w_1key_scalar;

insert into db15_w_1key_scalar values ('only row');

select * from db15_w_1key_scalar;

insert into db15_w_1key_scalar values ('only row');

delete from db15_w_1key_scalar where val = 'not only row';

select * from db15_w_1key_scalar;

update db15_w_1key_scalar set val = 'new scalar val';

select * from db15_w_1key_scalar;

delete from db15_w_1key_scalar;


cheers


andrew


-- 
Andrew Dunstan                https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: Re: pgsql: Use slots in trigger infrastructure, except for the actual invoc
Next
From: Andres Freund
Date:
Subject: Re: pgsql: Use slots in trigger infrastructure, except for theactual invoc