Re: Need help with phys backed shm segments (Postgresql+FreeBSD).

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Alfred Perlstein <bright(at)wintelcom(dot)net>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Need help with phys backed shm segments (Postgresql+FreeBSD).
Date: 2000-12-05 15:43:10
Message-ID: 14549.976030990@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Alfred Perlstein <bright(at)wintelcom(dot)net> writes:
> Here's the log, the number in parens is the address of the lock,
> on tas() the value printed to the right is the value in _ret,
> for the others, it's the value before the lock count is set.

This looks to be the trace of a SpinAcquire()
(see src/backend/storage/ipc/spin.c):

> tas (0x30048048) -> 0
> tas (0x3004804d) -> 0
> tas (0x3004804c) -> 0
> S_UNLOCK: (0x30048048) -> 1

followed by SpinRelease():

> tas (0x30048048) -> 0
> S_UNLOCK: (0x3004804c) -> 1
> S_UNLOCK: (0x3004804d) -> 1
> S_UNLOCK: (0x30048048) -> 1

followed by a failed attempt to reacquire the same SLock:

> tas (0x30048048) -> 0
> tas (0x3004804d) -> 4
> tas (0x3004804d) -> 1
> tas (0x3004804d) -> 1
> tas (0x3004804d) -> 1
> tas (0x3004804d) -> 1

And that looks completely broken :-( ... something's clobbered the
exlock field of the SLock struct, apparently. Are you sure this
kernel feature you're trying to use actually works?

BTW, if you're wondering why an SLock needs to contain *three*
hardware spinlocks, the answer is that it doesn't. This code has
been greatly simplified in current sources...

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Alfred Perlstein 2000-12-05 15:47:13 Re: Need help with phys backed shm segments (Postgresql+FreeBSD).
Previous Message Bruce Guenter 2000-12-05 15:30:32 Re: Using Threads?