Re: BUG #15672: PostgreSQL 11.1/11.2 crashed after dropping a partition table

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: jianingy.yang@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2019-03-07T00:03:16Z
Lists: pgsql-bugs, pgsql-hackers
On Wed, Mar 06, 2019 at 03:06:53PM +0000, PG Bug reporting form wrote:
> 1. create a partition table with the following constraints
>     a. with a unique key on partition key and a varchar type field
>     b. using hash partition
> 2. alter the  length of the varchar type field
> 3. drop the partition table in a transaction
> 4. crash

I can reproduce the failure easily, not on HEAD but with
REL_11_STABLE:
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at
../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007f585729b535 in __GI_abort () at abort.c:79
#2  0x000055eef597e60a in errfinish (dummy=0) at elog.c:555
#3  0x000055eef5980c50 in elog_finish (elevel=22, fmt=0x55eef5a41408
"cannot abort transaction %u, it was already committed") at
elog.c:1376
#4  0x000055eef5479647 in RecordTransactionAbort (isSubXact=false) at
xact.c:1580
#5  0x000055eef547a6c0 in AbortTransaction () at xact.c:2602
#6  0x000055eef547aef4 in AbortCurrentTransaction () at xact.c:3104

That's worth an investigation, SMgrRelationHash is getting messed up
which causes the transaction commit to fail where it should not.
--
Michael

Commits

  1. Apply stopgap fix for bug #15672.