[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.

	As Markus says it's hard for that to happen, unless the:

	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

	Thanks ;-)


michael.meeks at suse.com  <><, Pseudo Engineer, itinerant idiot

More information about the LibreOffice mailing list