Boost C++ Libraries: Ticket #2339: segment manager releases memory used for an intrusive node before it's erased from the index https://svn.boost.org/trac10/ticket/2339 <p> If these are true: </p> <blockquote> <p> (1) use an intrusive index with managed memory segments (2) construct an object and have the constructor throw </p> </blockquote> <p> Then you will get random segfaults. This is because memory used for the node in the intrusive index is freed before that node is removed from the index. Then that memory may get overwritten (by the allocation node eraser) and when the node is removed unexpected things happen. </p> <p> The solution is to apply this patch, so that the «value_eraser» is created after the «mem_algo_deallocator» and hence their destructors are called in the proper order. </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/2339 Trac 1.4.3 Devin Bayer <web@…> Thu, 18 Sep 2008 11:17:31 GMT attachment set https://svn.boost.org/trac10/ticket/2339 https://svn.boost.org/trac10/ticket/2339 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">boost-destruction-order-fix.diff</span> </li> </ul> <p> boost-destruction-order-fix.diff </p> Ticket Ion Gaztañaga Tue, 18 Nov 2008 07:57:27 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/2339#comment:1 https://svn.boost.org/trac10/ticket/2339#comment:1 <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> Fixed in Boost 1.37 </p> Ticket