Declare LWLock pointers as volatile to prevent AIX compiler from

reordering operations at its whim.  Releasing TAS lock before we've
finished updating proc structure is uncool.
REL7_2_STABLE
Tom Lane 24 years ago
parent 53016fa55c
commit 584f818bef
  1. 8
      src/backend/storage/lmgr/lwlock.c

@ -15,7 +15,7 @@
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lwlock.c,v 1.3 2001/11/05 17:46:28 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lwlock.c,v 1.4 2001/12/10 21:13:50 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -185,7 +185,7 @@ LWLockAssign(void)
void void
LWLockAcquire(LWLockId lockid, LWLockMode mode) LWLockAcquire(LWLockId lockid, LWLockMode mode)
{ {
LWLock *lock = LWLockArray + lockid; volatile LWLock *lock = LWLockArray + lockid;
bool mustwait; bool mustwait;
PRINT_LWDEBUG("LWLockAcquire", lockid, lock); PRINT_LWDEBUG("LWLockAcquire", lockid, lock);
@ -303,7 +303,7 @@ LWLockAcquire(LWLockId lockid, LWLockMode mode)
bool bool
LWLockConditionalAcquire(LWLockId lockid, LWLockMode mode) LWLockConditionalAcquire(LWLockId lockid, LWLockMode mode)
{ {
LWLock *lock = LWLockArray + lockid; volatile LWLock *lock = LWLockArray + lockid;
bool mustwait; bool mustwait;
PRINT_LWDEBUG("LWLockConditionalAcquire", lockid, lock); PRINT_LWDEBUG("LWLockConditionalAcquire", lockid, lock);
@ -369,7 +369,7 @@ LWLockConditionalAcquire(LWLockId lockid, LWLockMode mode)
void void
LWLockRelease(LWLockId lockid) LWLockRelease(LWLockId lockid)
{ {
LWLock *lock = LWLockArray + lockid; volatile LWLock *lock = LWLockArray + lockid;
PROC *head; PROC *head;
PROC *proc; PROC *proc;
int i; int i;

Loading…
Cancel
Save