Boost C++ Libraries: Ticket #8336: fusion sequence io manipulators are thread un-safe https://svn.boost.org/trac10/ticket/8336 <p> boost::detail::stream_data::attach uses a std::vector to store instances of data associated with the tuple_open, tuple_close, tuple_delimiter io manipulators. When streaming unrelated fusion sets to unrelated ostringstreams from different threads fails MSVC's debug iterator checks leading to an assert. </p> <p> Additionally the stored data items once constructed remain in memory until program exit. </p> <p> The attached patch removes the static vector instance, allowing the stream to properly manage the manipulator data lifetime by using std::ios_base::register_callback. </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/8336 Trac 1.4.3 jeffrey.flinn@… Tue, 26 Mar 2013 16:47:26 GMT attachment set https://svn.boost.org/trac10/ticket/8336 https://svn.boost.org/trac10/ticket/8336 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">manip.hpp.patch</span> </li> </ul> <p> patch with thread safety fix </p> Ticket jeffrey.flinn@… Wed, 27 Mar 2013 14:22:50 GMT attachment set https://svn.boost.org/trac10/ticket/8336 https://svn.boost.org/trac10/ticket/8336 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">manip.hpp.2.patch</span> </li> </ul> <p> updated patch replacing local static initialization with C++03 class static initialization </p> Ticket anonymous Wed, 27 Mar 2013 14:25:33 GMT <link>https://svn.boost.org/trac10/ticket/8336#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/8336#comment:1</guid> <description> <p> Replaced local static initialization with C++03 class static initialization similar to the boost units lib io.hpp implementation. </p> </description> <category>Ticket</category> </item> <item> <author>Jeffrey.Flinn@…</author> <pubDate>Wed, 03 Apr 2013 12:46:49 GMT</pubDate> <title>attachment set https://svn.boost.org/trac10/ticket/8336 https://svn.boost.org/trac10/ticket/8336 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">io.cpp.patch</span> </li> </ul> <p> added test for overwriting tuple_xxx io manipulater, using strings as values, fix compile warning </p> Ticket Joel de Guzman Sun, 21 Apr 2013 14:07:23 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/8336#comment:2 https://svn.boost.org/trac10/ticket/8336#comment:2 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> </ul> <p> (In <a class="changeset" href="https://svn.boost.org/trac10/changeset/84002" title="Fixes #8336">[84002]</a>) Fixes <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8336" title="#8336: Bugs: fusion sequence io manipulators are thread un-safe (closed: fixed)">#8336</a> </p> Ticket