commit | f28000dc9b6f596921b1a4387746bea4c8cd207f | [log] [tgz] |
---|---|---|
author | Carl Shapiro <cshapiro@google.com> | Tue Aug 02 00:01:13 2011 -0700 |
committer | Carl Shapiro <cshapiro@google.com> | Mon Aug 15 21:01:19 2011 -0700 |
tree | 98b88552538c7d3a28d93fc53a85130842be888b | |
parent | b25e56e5e578220734f6f75b810fe7a94c69793d [diff] |
Fix two data races in the monitor code. First, the release of a lock was not preceded by a memory barrier. This would allow stores within the critical section to move outside the critical section violating the monitor invariant. Second, the thin lock value was often not loaded through volatile pointer. This provides the compiler with the freedom to reload the thin lock with a different value causing erroneous updates to the lock word. Bug: 5107390