El 15/09/2014 15:29, Lars Hagström escribió:
Okay, I'm glad I asked, before we got further down that avenue... So, back to square one. Anyway, I've now just got checks at the beginning and end of priv_deallocate, and the checks do not fail. However, I did keep my logs in priv_check_and_allocate and priv_deallocate, and from my logs it looks like one block is deallocated twice. So my current theory is that there is something in the intrusive vector that causes a double deallocation. At the end of my email is the log and the call stack for this.
It seems that the code handling the backwards expansion of the buffer
has a bug destroying an object twice. As a workaround, try to comment
"expand_bwd" flags from allocator calls (Boost.Interprocess allocators
support realloc-like buffer expansions where the new buffer can contain
the old one). Example in "vector::priv_forward_range_insert_no_capacity":
std::pair