From: Howard Hinnant (hinnant_at_[hidden])
Date: 2005-08-23 09:32:03
On Aug 23, 2005, at 4:50 AM, Ben Artin wrote:
> I consider
> this a pretty serious error, and that I think we should understand how
> it came
> to pass.
The technical cause of the error is that there was an unforeseen
conflict between the CodeWarrior compiler's register allocation scheme,
and the original code, but only when the original was actually inlined
(the conflict disappeared with inlining off as might have easily
happened in a debug run). The bug had nothing to do with
multithreading or memory barriers per say, just that these issues were
what was being implemented.
The fix was to avoid explicitly naming registers in the assembly,
allowing the compiler to allocate registers at will with no chance for
The bug was first detected (to my knowledge) by John Daub on Aug. 10.
I learned about it on Aug. 12, but was not able to look at it, diagnose
it, and suggest a fix until Aug. 15.
<shrug> bugs happen. Bugs of this nature won't be eradicated unless
you outlaw dropping into assembly (and I don't recommend that).
Perhaps an extended public beta of boost releases (all compressed and
easy to download) might help?
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk