Re: FATAL: lock AccessShareLock on object 0/1260/0 is already held - Mailing list pgsql-hackers

From Tom Lane
Subject Re: FATAL: lock AccessShareLock on object 0/1260/0 is already held
Date
Msg-id 5227.1315428924@sss.pgh.pa.us
Whole thread Raw
In response to Re: FATAL: lock AccessShareLock on object 0/1260/0 is already held  (Robert Haas <robertmhaas@gmail.com>)
Responses Re: FATAL: lock AccessShareLock on object 0/1260/0 is already held
Re: FATAL: lock AccessShareLock on object 0/1260/0 is already held
List pgsql-hackers
Robert Haas <robertmhaas@gmail.com> writes:
> Tom's right to be skeptical of my theory, because it would require a
> CHECK_FOR_INTERRUPTS() outside of a transaction block in one of the
> pathways that use session-level locks, and I can't find one.

More to the point: session-level locks are released on error.  The only
way to get out of a transaction while still holding one is for the
VACUUM-or-whichever-command code to deliberately commit and exit while
still holding it.  An error exit path would release the lock.

> OTOH, I'm skeptical of the theory that this involves userlocks,
> because this whole thread started because of a complaint about lock
> 0/1260/0 already being held.  That ain't no userlock.

Yeah, and for that matter it seems to let VACUUM off the hook too.
If we assume that the reported object ID is non-corrupt (and if it's
always the same, that seems like the way to bet) then this is a lock
on pg_authid.

Hmmm ... could the pathway involve an error exit from client
authentication?  We're still finding bugs in the 9.0 rewrite of
auth-time database access.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: [PATCH] Don't truncate integer part in to_char for 'FM99.'
Next
From: Marti Raudsepp
Date:
Subject: Re: [PATCH] Log crashed backend's query (activity string)