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}}

and print maPersistTable:
$2 = {<std::__norm::vector<EscherPersistEntry*,
std::allocator<EscherPersistEntry*> >> =
{<std::__norm::_Vector_base<EscherPersistEntry*,
std::allocator<EscherPersistEntry*> >> = {_M_impl =
{<std::allocator<EscherPersistEntry*>> =
    {<__gnu_cxx::new_allocator<EscherPersistEntry*>> = {<No data fields>},
<No data fields>}, _M_start = 0x2a27bc8, _M_finish = 0x2a27bf0,
_M_end_of_storage =
    0x2a27c08}}, <No data fields>},
<__gnu_debug::_Safe_sequence<std::__debug::vector<EscherPersistEntry*,
std::allocator<EscherPersistEntry*> > >> =
{<__gnu_debug::_Safe_sequence_base> = {_M_iterators = 0x7fff356e1120,
      _M_const_iterators = 0x0, _M_version = 5}, <No data fields>},
_M_guaranteed_capacity = 6}


2011/6/21 Noel Power <nopo...@novell.com>

> On 21/06/11 15:17, Markus Mohrhard wrote:
>
>> Hello Noel, all,
>>
>> I have attached a test document and a diff. I don't understand why this
>> still crashs calc even if there is nothing anymore that can create any
>> problems.
>>
> well it doesn't crash for me ( even worse it doesn't crash without the
> patch either ) and even worse still valgrind doesn't even complain. Welll we
> know that erase invalidates vector iterators so I don't see a problem with
> your patch ( or doubt it's validity ) but still interested in reproducing at
> least this problem. Is there something else I need to do?
>
> Noel
>
> probably though I would just do the following rather than saving the
> iterator and doing the delete and erase outside the loop
>
>    if ( (*it)->mnID == nID )
>
>   {
>       delete *it;
>       maPersistTable.erase( it );
>       break;
>   }
>
>
>
#0  0x00007f8b6c098ab5 in raise () from /lib64/libc.so.6
#1  0x00007f8b6c099fb6 in abort () from /lib64/libc.so.6
#2  0x00007f8b6c8a80c4 in __gnu_debug::_Error_formatter::_M_error() const () from /devel/libo/libo1/solver/350/unxlngx6.pro/installation/opt/program/../basis-link/ure-link/lib/libstdc++.so.6
#3  0x00007f8b4bbcbbbc in __gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<EscherPersistEntry**, std::__norm::vector<EscherPersistEntry*, std::allocator<EscherPersistEntry*> > >, std::__debug::vector<EscherPersistEntry*, std::all
ocator<EscherPersistEntry*> > >::operator++ (this=0x7fff356e1120) at /usr/include/c++/4.5/debug/safe_iterator.h:206
#4  0x00007f8b4bbbf5f3 in EscherPersistTable::PtDelete (this=0x29e3658, nID=327680) at /devel/libo/libo1/clone/filters/filter/source/msfilter/escherex.cxx:3309
#5  0x00007f8b4bbc51ef in EscherEx::LeaveGroup (this=0x29e3658) at /devel/libo/libo1/clone/filters/filter/source/msfilter/escherex.cxx:4761
#6  0x00007f8b4bbe6e25 in ImplEscherExSdr::ImplExitPage (this=0x29e4bb8) at /devel/libo/libo1/clone/filters/filter/source/msfilter/eschesdo.cxx:894
#7  0x00007f8b4bbe6f06 in ImplEscherExSdr::ImplWriteCurrentPage (this=0x29e4bb8) at /devel/libo/libo1/clone/filters/filter/source/msfilter/eschesdo.cxx:916
#8  0x00007f8b4bbe6f95 in EscherEx::AddSdrPage (this=0x29e3658, rPage=...) at /devel/libo/libo1/clone/filters/filter/source/msfilter/eschesdo.cxx:930
#9  0x00007f8b410c59e6 in XclExpObjectManager::ProcessDrawing (this=0x29e0e08, pSdrPage=0x21b2328) at /devel/libo/libo1/sc/source/filter/excel/xeescher.cxx:1575
#10 0x00007f8b40ff8385 in ExcTable::FillAsXmlTable (this=0x2a27918, nCodeNameIdx=0) at /devel/libo/libo1/sc/source/filter/excel/excdoc.cxx:632
#11 0x00007f8b40ff6b32 in ExcTable::FillAsTable (this=0x2a27918, nCodeNameIdx=0) at /devel/libo/libo1/sc/source/filter/excel/excdoc.cxx:436
#12 0x00007f8b40ff8ee7 in ExcDocument::ReadDoc (this=0x7fff356e19b0) at /devel/libo/libo1/sc/source/filter/excel/excdoc.cxx:730
#13 0x00007f8b41162b1a in XclExpXmlStream::exportDocument (this=0x29cbeb0) at /devel/libo/libo1/sc/source/filter/excel/xestream.cxx:1147
#14 0x00007f8b43ccfc12 in oox::core::FilterBase::filter (this=0x29cbeb0, rMediaDescSeq=...) at /devel/libo/libo1/oox/source/core/filterbase.cxx:530
#15 0x00007f8b440535fa in oox::xls::ExcelFilter::filter (this=0x1fe9b50, rDescriptor=...) at /devel/libo/libo1/oox/source/xls/excelfilter.cxx:194
#16 0x00007f8b6a91d3e2 in SfxObjectShell::ExportTo (this=0x1efea38, rMedium=...) at /devel/libo/libo1/sfx2/source/doc/objstor.cxx:2348
#17 0x00007f8b6a91897a in SfxObjectShell::SaveTo_Impl (this=0x1efea38, rMedium=..., pSet=0x2026fe8) at /devel/libo/libo1/sfx2/source/doc/objstor.cxx:1526
#18 0x00007f8b6a91daac in SfxObjectShell::DoSave_Impl (this=0x1efea38, pArgs=0x2026fe8) at /devel/libo/libo1/sfx2/source/doc/objstor.cxx:2449
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to