I was getting segfaults while working on the current master for a while.
This is the shortest way I could found to reproduce the problem:
create or replace function is_distinct_from(anyelement, anyelement)
returns boolean language sql
as 'select $1 is distinct from $2';
create operator !== (
procedure = is_distinct_from,
leftarg = anyelement,
rightarg = anyelement
);
create domain my_list int[] check (null !== all (value));
create table my_table (my_column my_list);
insert into my_table values ('{1}');
insert into my_table values ('{1}');
Here is the backtrace:
> * thread #1: tid = 0x108710, 0x00000001040ebf82
> postgres`MemoryContextDelete(context=0x7f7f7f7f7f7f7f7f) + 18 at mcxt.c:205,
> queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS
> (code=EXC_I386_GPFLT)
> * frame #0: 0x00000001040ebf82
> postgres`MemoryContextDelete(context=0x7f7f7f7f7f7f7f7f) + 18 at mcxt.c:205
> frame #1: 0x0000000103ea60ac postgres`fmgr_sql(fcinfo=0x00007fa5e50150a8)
> + 252 at functions.c:1047
> frame #2: 0x0000000103e9f6f5
> postgres`ExecEvalScalarArrayOp(sstate=0x00007fa5e5015038,
> econtext=<unavailable>, isNull="", isDone=<unavailable>) + 885 at
> execQual.c:2660
> frame #3: 0x0000000103ea1bb4
> postgres`ExecEvalCoerceToDomain(cstate=<unavailable>,
> econtext=0x00007fa5e6065110, isNull="", isDone=<unavailable>) + 180 at
> execQual.c:4009
> frame #4: 0x0000000103ea208a postgres`ExecProject + 39 at execQual.c:5345
> frame #5: 0x0000000103ea2063 postgres`ExecProject(projInfo=<unavailable>,
> isDone=0x00007fff5bef58bc) + 387 at execQual.c:5560
> frame #6: 0x0000000103eb96a3 postgres`ExecResult(node=0x00007fa5e6064ff8)
> + 179 at nodeResult.c:155
> frame #7: 0x0000000103e9b57c
> postgres`ExecProcNode(node=0x00007fa5e6064ff8) + 92 at execProcnode.c:392
> frame #8: 0x0000000103eb5f12
> postgres`ExecModifyTable(node=0x00007fa5e6064ea0) + 434 at
> nodeModifyTable.c:1331
> frame #9: 0x0000000103e9b5bb
> postgres`ExecProcNode(node=0x00007fa5e6064ea0) + 155 at execProcnode.c:396
> frame #10: 0x0000000103e97a90 postgres`standard_ExecutorRun [inlined]
> ExecutePlan(estate=<unavailable>, planstate=0x00007fa5e6064ea0,
> use_parallel_mode='\0', operation=<unavailable>, numberTuples=0,
> direction=<unavailable>, dest=<unavailable>) + 87 at execMain.c:1566
> frame #11: 0x0000000103e97a39
> postgres`standard_ExecutorRun(queryDesc=0x00007fa5e6061038,
> direction=<unavailable>, count=0) + 201 at execMain.c:338
> frame #12: 0x0000000103fc18da
> postgres`ProcessQuery(plan=0x00007fa5e604fbd8, sourceText="insert into
> my_table values ('{1}');", params=0x0000000000000000,
> dest=0x00007fa5e604fcd0, completionTag="") + 218 at pquery.c:185
> frame #13: 0x0000000103fc0ddb
> postgres`PortalRunMulti(portal=0x00007fa5e480a238, isTopLevel='\x01',
> dest=0x00007fa5e604fcd0, altdest=0x00007fa5e604fcd0, completionTag="") + 331
> at pquery.c:1283
> frame #14: 0x0000000103fc06f8
> postgres`PortalRun(portal=0x00007fa5e480a238, count=9223372036854775807,
> isTopLevel='\x01', dest=0x00007fa5e604fcd0, altdest=0x00007fa5e604fcd0,
> completionTag="") + 552 at pquery.c:812
> frame #15: 0x0000000103fbe8d6 postgres`PostgresMain + 48 at
> postgres.c:1105
> frame #16: 0x0000000103fbe8a6 postgres`PostgresMain(argc=<unavailable>,
> argv=<unavailable>, dbname=<unavailable>, username=<unavailable>) + 9414 at
> postgres.c:4032
> frame #17: 0x0000000103f503c8 postgres`PostmasterMain [inlined]
> BackendRun + 8328 at postmaster.c:4237
> frame #18: 0x0000000103f503a2 postgres`PostmasterMain [inlined]
> BackendStartup at postmaster.c:3913
> frame #19: 0x0000000103f503a2 postgres`PostmasterMain at postmaster.c:1684
> frame #20: 0x0000000103f503a2 postgres`PostmasterMain(argc=<unavailable>,
> argv=<unavailable>) + 8290 at postmaster.c:1292
> frame #21: 0x0000000103ed759f postgres`main(argc=<unavailable>,
> argv=<unavailable>) + 1567 at main.c:223
> frame #22: 0x00007fff8f1245c9 libdyld.dylib`start + 1
I can reproduce it on 9.5 branch too, but not on 9.4 branch.
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers