$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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 
conflict.
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?
-Howard