Mark FastPathStrongRelationLocks volatile.
authorRobert Haas <rhaas@postgresql.org>
Mon, 31 Mar 2014 18:32:12 +0000 (14:32 -0400)
committerRobert Haas <rhaas@postgresql.org>
Mon, 31 Mar 2014 18:38:18 +0000 (14:38 -0400)
Otherwise, the compiler might decide to move modifications to data
within this structure outside the enclosing SpinLockAcquire /
SpinLockRelease pair, leading to shared memory corruption.

This may or may not explain a recent lmgr-related buildfarm failure
on prairiedog, but it needs to be fixed either way.

src/backend/storage/lmgr/lock.c

index b7a5e457448a21dc42087d340ebd56e78a19bc25..3566208904c344212580fa320c580a94e89ec36c 100644 (file)
@@ -237,7 +237,7 @@ typedef struct
    uint32      count[FAST_PATH_STRONG_LOCK_HASH_PARTITIONS];
 } FastPathStrongRelationLockData;
 
-FastPathStrongRelationLockData *FastPathStrongRelationLocks;
+volatile FastPathStrongRelationLockData *FastPathStrongRelationLocks;
 
 
 /*