Skip site navigation (1) Skip section navigation (2)

Re: BUG #3242: FATAL: could not unlock semaphore: error code 298

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Magnus Hagander <magnus(at)hagander(dot)net>
Cc: Marcin Waldowski <M(dot)Waldowski(at)sulechow(dot)net>, pgsql-bugs(at)postgresql(dot)org, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: BUG #3242: FATAL: could not unlock semaphore: error code 298
Date: 2007-04-20 16:55:00
Message-ID: 7149.1177088100@sss.pgh.pa.us (view raw or flat)
Thread:
Lists: pgsql-bugspgsql-hackers
Magnus Hagander <magnus(at)hagander(dot)net> writes:
> Tom Lane wrote:
>> How is it possible for a semaphore to be unlocked "too many times"?
>> It's supposed to be a running counter of the net V's minus P's, and
>> yes it had better be able to count higher than one.  Have we chosen
>> the wrong Windows primitive to implement this?

> No, it's definitly the right primitive. But we're creating it with a max
> count of 1.

That's definitely wrong.  There are at least three reasons for a PG
process's semaphore to be signaled (heavyweight lock release, LWLock
release, pin count waiter), and at least two of them can occur
concurrently (eg, if deadlock checker fires, it will need to take
LWLocks, but there's nothing saying that the original lock won't be
released while it waits for an LWLock).

The effective max count on Unixen is typically in the thousands,
and I'd suggest the same on Windows unless there's some efficiency
reason to keep it small (in which case, maybe ten would do).

I'm astonished that we've not seen this reported before.  Has the
Windows sema code always been like that?

			regards, tom lane

In response to

Responses

pgsql-hackers by date

Next:From: Magnus HaganderDate: 2007-04-20 17:01:06
Subject: Re: BUG #3242: FATAL: could not unlock semaphore: error code 298
Previous:From: Magnus HaganderDate: 2007-04-20 16:46:09
Subject: Re: BUG #3242: FATAL: could not unlock semaphore: error code 298

pgsql-bugs by date

Next:From: Magnus HaganderDate: 2007-04-20 17:01:06
Subject: Re: BUG #3242: FATAL: could not unlock semaphore: error code 298
Previous:From: Magnus HaganderDate: 2007-04-20 16:46:09
Subject: Re: BUG #3242: FATAL: could not unlock semaphore: error code 298

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group