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

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Need help with phys backed shm segments (Postgresql+FreeBSD).
Дата
Msg-id 14549.976030990@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Need help with phys backed shm segments (Postgresql+FreeBSD).  (Alfred Perlstein <bright@wintelcom.net>)
Ответы Re: Need help with phys backed shm segments (Postgresql+FreeBSD).  (Alfred Perlstein <bright@wintelcom.net>)
Список pgsql-hackers
Alfred Perlstein <bright@wintelcom.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


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Bruce Guenter
Дата:
Сообщение: Re: Using Threads?
Следующее
От: Alfred Perlstein
Дата:
Сообщение: Re: Need help with phys backed shm segments (Postgresql+FreeBSD).