Andrew Dunstan <andrew@dunslane.net> writes:
> The symptom is that the recovery process blocks forever on a semaphore.
> We've crashed it and got the following backtrace:
> #0 0x0000003493ed5337 in semop () from /lib64/libc.so.6
> #1 0x00000000005bd103 in PGSemaphoreLock (sema=0x2b14986aec38, interruptOK=1
> '\001') at pg_sema.c:420
> #2 0x00000000005de645 in LockBufferForCleanup () at bufmgr.c:2432
> #3 0x0000000000463733 in heap_xlog_clean (lsn=<value optimized out>,
> record=0x1787e1c0) at heapam.c:4168
> #4 heap2_redo (lsn=<value optimized out>, record=0x1787e1c0) at heapam.c:4858
> #5 0x0000000000488780 in StartupXLOG () at xlog.c:6250
So who's holding the buffer lock that it wants? Are you sure this is an
actual hang, and not just recovery waiting for a standby query to complete?
regards, tom lane