[Libreoffice] crash in escherex.cxx in master
Markus Mohrhard
markus.mohrhard at googlemail.com
Tue Jun 21 15:44:12 PDT 2011
Ok I looked into the corresponding gcc stl function and it seems that the
debug function checks if the iterator is incrementable. I haven't checked
the macro that performs this check but the iterator might be marked as
invalid after an element has been erased. So this crash will only happen
during a debug build, but I think it is good to know that during a debug
build some additional checks are performed.
the relevant code is:
_Safe_iterator&
operator++()
{
_GLIBCXX_DEBUG_VERIFY(this->_M_incrementable(),
_M_message(__msg_bad_inc)
._M_iterator(*this, "this"));
++_M_current;
return *this;
}
I still don't understand why it fails with my patch but this might be
because it is not delivered correctly. I'll push a patch based on your idea
to master.
2011/6/21 Noel Power <nopower at novell.com>
> On 21/06/11 18:52, Markus Mohrhard wrote:
>
>> I did a debug build. And I had some stl debug symbols in my backtrace so
>> it might be that perhaps the compiler won't optimize this out.
>>
>> I attached the backtrace.
>>
>> print it shows: it = {<__gnu_debug::_Safe_iterator_**base> = {_M_sequence
>> = 0x29e3678, _M_version = 0, _M_prior = 0x0, _M_next = 0x0}, _M_current =
>> {_M_current = 0x2a27bf0}}
>>
> ah, ok -D_GLIBCXX_DEBUG is enabled, right I tried to build some stuff
> partially ( with some extra debug flags etc. ) <sigh> didn't work ( link
> problems ) I will try a full debug build ( have never done that up to now )
>
> Noel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20110622/a2538e46/attachment.html>
More information about the LibreOffice
mailing list