"Steven Flatt" <steven.flatt@gmail.com> writes:
> This isn't a postgres deadlock per se, but the end result is that two
> postgres backends are stuck, each waiting on a PGSemaphoreLock that the
> other presumably has. The processes have been stuck for hours.
No, that's not what the backtraces say. The autovac process is trying
to get super-exclusive lock on a buffer (apparently in relation 16783
--- what is that?). There's no evidence in the stack trace that the
TRUNCATE process has any conflicting buffer lock.
What I think might be happening is a three-way deadlock involving these
two and a third process that has the desired buffer lock. Have you got
anything else that seems to be stuck?
regards, tom lane