mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
50938576d4
during the regression test. The problem has been reproduced on two machine but both of these are the same type of hardware and software. I also tried to recreate the problem on other machines, on older version of AIX but I couldn't. After looked through pgsql-hackers mailing list, I focused on spin lock issue to solve the problem. The easiest and may not be the best solution for the problem is to give up HAS_TEST_AND_SET. This actually works. One another and better solution for the problem is to use _check_lock() and _clear_lock() as spin lock. Important thing here is to define S_UNLOCK() with _clear_lock(). This will solve the so called "Compiler bug" issue someone wrote on the mailing list. We have some other API such as cs(), compare_and_swap() and fetch_and_or() to do test and set on AIX, but any of these didn't solve my problem. I wrote tiny testing program to see if we have any bug of these API of AIX, but I couldn't see any problem except for compare_and_swap(). It seems that you can not use compare_and_swap() for the purpose, as it would not work as spin lock on any SMP machines I tested. I don't know the reason why cs() nor fetch_and_or()/fetch_and_and() will not work with PostgreSQL on p690. These worked with my testing program on all machines I tested. Tomoyuki Niijima |
||
---|---|---|
.. | ||
backend | ||
bin | ||
corba | ||
data | ||
include | ||
interfaces | ||
makefiles | ||
pl | ||
port | ||
template | ||
test | ||
tools | ||
tutorial | ||
utils | ||
DEVELOPERS | ||
Makefile | ||
Makefile.global.in | ||
Makefile.shlib | ||
nls-global.mk | ||
win32.mak |