Re: BUG #16293: postgres segfaults and returns SQLSTATE 08006
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Daniel WM <dwilches@gmail.com>, pgsql-bugs@lists.postgresql.org
Date: 2020-03-14T21:26:57Z
Lists: pgsql-bugs
Hi,
On 2020-03-14 17:21:04 -0400, Tom Lane wrote:
> Daniel WM <dwilches@gmail.com> writes:
> > I have finally isolated the issue and I have a set of steps that reliably
> > cause the segfault:
>
> Interesting. I do *not* see a crash in v12 or HEAD, but v11 gives
> me an assertion failure:
>
> TRAP: FailedAssertion("!(!slot->tts_fixedTupleDescriptor)", File: "execTuples.c", Line: 284)
> 2020-03-14 17:16:06.626 EDT [1101] LOG: server process (PID 20822) was terminated by signal 6: Aborted
> 2020-03-14 17:16:06.626 EDT [1101] DETAIL: Failed process was running: INSERT INTO parent_table VALUES ('2020-02-02 01:00:00+00:00', 'f');
>
> here:
>
> #3 0x000000000063ef45 in ExecSetSlotDescriptor (slot=0x1cf4060,
> tupdesc=0x7f903a2dd0f8) at execTuples.c:284
> #4 0x00000000006360eb in ExecConstraints (resultRelInfo=0x1cf47b8,
> slot=0x1cf4060, estate=0x1cf3778) at execMain.c:2062
> #5 0x000000000065a44d in ExecInsert (mtstate=0x1cf3ae0, slot=0x1cf4060,
> planSlot=0x1cf4060, estate=0x1cf3778, canSetTag=true)
> at nodeModifyTable.c:398
> #6 0x000000000065b80b in ExecModifyTable (pstate=<value optimized out>)
> at nodeModifyTable.c:2159
> #7 0x0000000000636c27 in ExecProcNode (queryDesc=0x1ce51e8,
> direction=<value optimized out>, count=0, execute_once=224)
> at ../../../src/include/executor/executor.h:247
> #8 ExecutePlan (queryDesc=0x1ce51e8, direction=<value optimized out>,
> count=0, execute_once=224) at execMain.c:1723
> #9 standard_ExecutorRun (queryDesc=0x1ce51e8,
> direction=<value optimized out>, count=0, execute_once=224)
>
> So this looks like something to do with Andres' tupletableslot work.
Interesting. There wasn't that much in v11. It's not the general rework,
but just the allocation of the descriptor together slot when the
descriptor is known at creation time - or a conflict with concurrent
partitioning work. It's plausible that enough changed in master for
that to not be a problem anymore.
Looking.
Greetings,
Andres Freund
Commits
-
Add regression tests for constraint errors in partitioned tables.
- f801ceb696b4 13.0 landed
- 58995db07e37 11.8 landed
- 2060999a4d6e 10.13 landed
- 7c8364200261 12.3 landed
-
Fix potential crash after constraint violation errors in partitioned tables.
- d35631e37cab 11.8 landed
- 44170a58092d 10.13 landed