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:01 +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 3e761027946aa6d9ee8a0bf9d27ad0e33e2f682c..0f218280090767e916c35742d66af1c0f992fd0a 100644 (file)
@@ -238,7 +238,7 @@ typedef struct
    uint32      count[FAST_PATH_STRONG_LOCK_HASH_PARTITIONS];
 } FastPathStrongRelationLockData;
 
-FastPathStrongRelationLockData *FastPathStrongRelationLocks;
+volatile FastPathStrongRelationLockData *FastPathStrongRelationLocks;
 
 
 /*