yep... after several hours it crashed again here is the debugger information:
it crashed on this point
iBuffer->pop_front();
iBuffer->pop_front();
To copy to clipboard, switch view to plain text mode
on the pop_front() at the destroy_item
void pop_front() {
BOOST_CB_ASSERT(!empty()); // check for empty buffer (front element not available)
destroy_item(m_first);
increment(m_first);
--m_size;
}
void pop_front() {
BOOST_CB_ASSERT(!empty()); // check for empty buffer (front element not available)
destroy_item(m_first);
increment(m_first);
--m_size;
}
To copy to clipboard, switch view to plain text mode
at invalidate_iterators
void destroy_item(pointer p) {
m_alloc.destroy(p);
#if BOOST_CB_ENABLE_DEBUG
invalidate_iterators(iterator(this, p));
std::memset(p, cb_details::UNINITIALIZED, sizeof(value_type));
#endif
}
void destroy_item(pointer p) {
m_alloc.destroy(p);
#if BOOST_CB_ENABLE_DEBUG
invalidate_iterators(iterator(this, p));
std::memset(p, cb_details::UNINITIALIZED, sizeof(value_type));
#endif
}
To copy to clipboard, switch view to plain text mode
at remove(p,previous)
void invalidate_iterators(const Iterator& it) {
const debug_iterator_base* previous = 0;
for (const debug_iterator_base* p = m_iterators; p != 0; p = p->next()) {
if (((Iterator*)p)->m_it == it.m_it) {
p->invalidate();
remove(p, previous);
continue;
}
previous = p;
}
}
void invalidate_iterators(const Iterator& it) {
const debug_iterator_base* previous = 0;
for (const debug_iterator_base* p = m_iterators; p != 0; p = p->next()) {
if (((Iterator*)p)->m_it == it.m_it) {
p->invalidate();
remove(p, previous);
continue;
}
previous = p;
}
}
To copy to clipboard, switch view to plain text mode
at m_iterators = m_iterators->next();
//! Remove the current iterator from the iterator chain.
void remove(const debug_iterator_base* current,
const debug_iterator_base* previous) const {
if (previous == 0)
m_iterators = m_iterators->next();
else
previous->set_next(current->next());
}
};
//! Remove the current iterator from the iterator chain.
void remove(const debug_iterator_base* current,
const debug_iterator_base* previous) const {
if (previous == 0)
m_iterators = m_iterators->next();
else
previous->set_next(current->next());
}
};
To copy to clipboard, switch view to plain text mode
inline const debug_iterator_base* debug_iterator_base::next() const { return m_next; }
inline const debug_iterator_base* debug_iterator_base::next() const { return m_next; }
To copy to clipboard, switch view to plain text mode
Bookmarks