id summary reporter owner description type status milestone component version severity resolution keywords cc 3822 boost/asio/buffer.hpp MSVC workaround is inaccurately targeted Stephan T. Lavavej chris_kohlhoff "This was reported to Microsoft as a bug in VC10 Beta 2 (see http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=522096 ), but is actually a bug in Boost.Asio, caused by an inaccurately targeted workaround for a bug in VC8! The offending code is in boost/asio/buffer.hpp : ~buffer_debug_check() { #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) // MSVC's string iterator checking may crash in a std::string::iterator // object's destructor when the iterator points to an already-destroyed // std::string object, unless the iterator is cleared first. iter_ = Iterator(); #endif // BOOST_WORKAROUND(BOOST_MSVC, >= 1400) } The bug mentioned by the comment affected only VC8 (_MSC_VER == 1400). VC9 RTM and later are unaffected, as I fixed this bug in VC9 RTM. Therefore, the BOOST_WORKAROUND should check for == 1400, not >= 1400. (This workaround uses a singular iterator as the source of an assignment, which triggers undefined behavior. This crashes VC10 Beta 2 due to the extensive changes we made in the STL. It should probably trigger an assert dialog - I've made a note to myself about that. But in any event, a conformant implementation is allowed to explode when it sees this. I believe the workaround is correct for VC8, and it appears to be harmless for VC9, but restricting it to VC8 would be ideal.)" Bugs closed Boost 1.42.0 asio Boost 1.41.0 Problem fixed