[Libreoffice] segfault in sc
Michael Meeks
michael.meeks at suse.com
Mon Oct 10 04:27:42 PDT 2011
On Sun, 2011-10-09 at 22:46 -0700, julien2412 wrote:
> Thank you Markus for having put the bt that I gave you in pastebin.
:-)
> Marc-Andre, when I read the Markus message this morning, I thought exactly
> the same thing, so here it is :
> http://pastebin.com/gTHqax6r
Interesting trace:
Error: ContentBroker::initialize - already initialized! From
File /home/maryline/compile-libreoffice/libo/ucbhelper/source/client/contentbroker.cxx at Line 186
Looks as though we're not calling test's bootstrapfilter's tearDown
method which should de-initialize that nicely. Or at least, we're trying
to bootstrap that twice somehow- it'd be good to trace that I suppose.
We should also (prolly) add a static int counter to test/
bootstrapfixture to ensure we do in fact teardown as well as setUp.
Secondly Julien - your build is with debug=true - that can change
behaviour, but of course we should chase down those changed behaviours
and try to work out which is causing the grief [ almost certainly one of
the warnings ].
Otherwise - it's fairly hard to see what is going on here. In order to
get a 0x6 pointer and not crash or valgrind warning inside:
SfxObjectShellArr_Impl& SfxApplication::GetObjectShells_Impl() const
{
return *pAppData_Impl->pObjShells;
}
which is not in-line; we must have a valid (global) pApp, -and- a valid
pApp->pAppData_Impl - since pObjShells is at some substantial offset
inside there. So - pObjShells must be NULL in error cf.
sfx2/source/inc/appdata.hxx.
As Markus says it's hard for that to happen, unless the:
sfx2/source/appl/appinit.cxx's
bool SfxApplication::Initialize_Impl()
has caught an exception and not completed.
Julien - it'd be wonderful (if you could) to build sfx2 from clean with
debug=true, put a breakpoint at: appinit.cxx:231 (say) run to there,
then [ from there ! ], do break __cxa_throw, and continue until we get
an exception, the post some exception traces from there.
Is that do-able ? And of course, I suspect we should have a
try { } catch () { fail_really_hard_even_in_non_debug_mode(); } in that
constructor,
Thanks ;-)
Michael.
--
michael.meeks at suse.com <><, Pseudo Engineer, itinerant idiot
More information about the LibreOffice
mailing list