Jeff Davis <pgsql@j-davis.com> writes:
> I glanced at the code, and I see (in OwnLatch()):
> + if (latch->owner_pid != 0)
> + elog(ERROR, "latch already owned");
> + latch->owner_pid = MyProcPid;
> But it looks like there may be a race there.
Yeah, that error check is only intended to catch gross logic errors,
not to guard against race conditions. I don't think we really could
prevent a race there without adding a spinlock, which seems like
overkill.
> ... why throw an ERROR there if it can't happen (or
> indicates an inconsistent state when it does happen)?
Are you suggesting that an Assert would be sufficient?
regards, tom lane