On Fri, Feb 16, 2018 at 3:06 PM, amul sul <sula...@gmail.com> wrote: > On Fri, Feb 16, 2018 at 1:44 PM, tushar <tushar.ah...@enterprisedb.com> wrote: >> Hi, > [....] >> postgres=# SELECT end_lsn FROM >> pg_replication_slot_advance('regression_slot1', '0/2000071'); >> server closed the connection unexpectedly >> This probably means the server terminated abnormally >> before or while processing the request. >> !> >> > > I am able to reproduce this on the latest master head, the problem is in the > following hunk of pg_replication_slot_advance() where oldest LSN value > is accessed after releasing replication slot: > > > 476 if (moveto < startlsn) > 477 { > 478 ReplicationSlotRelease(); > 479 ereport(ERROR, > 480 (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), > 481 errmsg("cannot move slot to %X/%X, minimum is %X/%X", > 482 (uint32) (moveto >> 32), (uint32) moveto, > 483 (uint32) > (MyReplicationSlot->data.confirmed_flush >> 32), > 484 (uint32) > (MyReplicationSlot->data.confirmed_flush)))); > 485 } > 486 >
Attached patch proposes a required fix. Regards, Amul
fix_crash_in_pg_replication_slot_advance.patch
Description: Binary data