"Dave Korn" <[EMAIL PROTECTED]> writes:
[...]
| > We (in a major, commercial application) ran into exactly this issue.
| > 'asm volatile("lock orl $0,(%%esp)"::)' is your friend when this happens
| > (it is a barrier across which neither the compiler nor CPU will reorder
| > things). Failing that, no-op cross-library calls (that can't be inlined)
| > seem to do the trick.
|
| This simply means you have failed to correctly declare a variable volatile
| that in fact /is/ likely to be spontaneously changed by a separate thread of
| execution.
Note however, that declaring the variable "volatile" is no guarantee
that things will actually work as "expected. We have had that
discussion before :-)
-- Gaby