|
Boost Users : |
Subject: Re: [Boost-users] multi_index_container assertion after crash
From: joaquin_at_[hidden]
Date: 2009-10-19 10:40:29
Eli Zakashansky escribió:
> Joaquín hi,
>
> a) it's end() because the lookup condition was not met? - I am checking it before trying to erase.
> b) it's invalid because you already deleted the element it was pointing to? - No, I am looking for a record and then the first time I try to erase it, it happens.
> c) it belongs to a different container? Have you swapped containers, maybe? -No way.
>
> I've checked it 1000 times, and this is the same code that is used in my regular run and I had never experienced such problems (in this phase of the flow, this piece of code). Only when testing after crash the assertion pops up in 100% of the cases.
>
Hi Eli, first of all please don't top-post, it's again this list posting
rules,
see http://www.boost.org/community/policy.html#quoting .
I'm afraid I can't be of more help with the information you've got. From
your description of the problem, the container can't possibily be corrupted
because you know that crashes never happen in the middle of an
op container. Also, iterators are not persisted and they seemingly work
OK except when recovering after a crash. I don't see where the
problem might be, though a problem certainly is there.
Unless you can provide more info and/or some sample code I don't see
what else to try from my position. From yours you might want to
debug the program harder and/or set Boost.MultiIndex invariant-checking
mode (warning: extremely time-consuming) to validate your hypothesis
that crashes do not corrupt the container.
Best regards,
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net