Add debugging help in OwnLatch().

Build farm animal gharial recently failed a few times in a parallel
worker's call to OwnLatch() with "ERROR:  latch already owned".  Let's
turn that into a PANIC and show the PID of the owner, to try to learn
more.

Discussion: https://postgr.es/m/CA%2BhUKGJ_0RGcr7oUNzcHdn7zHqHSB_wLSd3JyS2YC_DYB%2B-V%3Dg%40mail.gmail.com
This commit is contained in:
Thomas Munro 2022-05-31 11:38:19 +12:00
parent 5f0adec253
commit 12e28aac8e
1 changed files with 5 additions and 2 deletions

View File

@ -402,6 +402,8 @@ InitSharedLatch(Latch *latch)
void
OwnLatch(Latch *latch)
{
int owner_pid;
/* Sanity checks */
Assert(latch->is_shared);
@ -410,8 +412,9 @@ OwnLatch(Latch *latch)
Assert(selfpipe_readfd >= 0 && selfpipe_owner_pid == MyProcPid);
#endif
if (latch->owner_pid != 0)
elog(ERROR, "latch already owned");
owner_pid = latch->owner_pid;
if (owner_pid != 0)
elog(PANIC, "latch already owned by PID %d", owner_pid);
latch->owner_pid = MyProcPid;
}