The following bug has been logged online:

Bug reference:      1512
Logged by:          Stephen Clouse
Email address:      [EMAIL PROTECTED]
PostgreSQL version: 8.0.1
Operating system:   Fedora Core 3
Description:        Assertion failure (lock.c:1537) with SELECT FOR UPDATE
and savepoints
Details: 

You need two psql sessions going to reproduce this.  Start with this very
simple schema:

CREATE TABLE foo (bar NUMERIC);
INSERT INTO foo VALUES (1);

Now, start session 1:

> BEGIN;
> SELECT * FROM foo WHERE bar = 1 FOR UPDATE;

 bar
-----
   1
(1 row)

Switch to session 2:

> BEGIN;
> SAVEPOINT foo;
> SELECT * FROM foo WHERE bar = 1 FOR UPDATE;
(Abort this with Ctrl-C)
Cancel request sent
ERROR:  canceling query due to user request
> ROLLBACK TO SAVEPOINT foo;

Back to session 1:

> ROLLBACK;
Session 1's backend will now die horribly and trigger a server reset.

Log shows the following as the cause of the server abort:

TRAP: FailedAssertion("!(SHMQueueEmpty(&(lock->procLocks)))", File:
"lock.c", Line: 1537)


I have not achieved guru status with the PostgreSQL code yet, otherwise I'd
send a patch along with this.

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to