shutting down UNO ...

Michael Meeks michael.meeks at suse.com
Mon Apr 8 02:14:16 PDT 2013


Hi there,

	I was surprised to discover (when re-working gengal) that if you do
some drawinglayer operations then it is necessary to shut-down UNO by
disposing some UNO component - before exiting - to avoid some rather
nasty atexit / static cleanup SEGV :-) One of those things is triggered
by importing svgs into galleries using gengal.

	I was wondering if there was some cppuhelper etc. place to publicise /
centralise this fact :-) it seems we do it in desktop/ and also now
gengal/. I append a trace of the clean shutdown path and the problematic
one.

	Thoughts ?

		Michael.

#1  0xb62775e7 in (anonymous namespace)::ImpTimedRefDev::~ImpTimedRefDev (this=0x89e6c28, __in_chrg=<optimized out>)
    at /data/opt/libreoffice/master/drawinglayer/source/primitive2d/textlayoutdevice.cxx:82
#2  0xb6277640 in (anonymous namespace)::ImpTimedRefDev::~ImpTimedRefDev (this=0x89e6c28, __in_chrg=<optimized out>)
    at /data/opt/libreoffice/master/drawinglayer/source/primitive2d/textlayoutdevice.cxx:84
#3  0xb6277565 in checked_delete<{anonymous}::ImpTimedRefDev> (x=<optimized out>)
    at /data/opt/libreoffice/master/workdir/unxlngi6.pro/UnpackedTarball/boost/boost/checked_delete.hpp:34
#4  boost::scoped_ptr<{anonymous}::ImpTimedRefDev>::~scoped_ptr(void) (this=<optimized out>, __in_chrg=<optimized out>)
    at /data/opt/libreoffice/master/workdir/unxlngi6.pro/UnpackedTarball/boost/boost/smart_ptr/scoped_ptr.hpp:80
#5  0xb6277587 in reset (p=0x0, this=0xb6317efc)
    at /data/opt/libreoffice/master/workdir/unxlngi6.pro/UnpackedTarball/boost/boost/smart_ptr/scoped_ptr.hpp:86
#6  comphelper::scoped_disposing_ptr<{anonymous}::ImpTimedRefDev>::reset((anonymous namespace)::ImpTimedRefDev *) (this=0xb6317ef8, p=0x0)
    at /data/opt/libreoffice/master/solver/unxlngi6.pro/inc/comphelper/scoped_disposing_ptr.hxx:61
#7  0xb627874c in disposing (this=0x87bb870, rEvt=<optimized out>)
    at /data/opt/libreoffice/master/solver/unxlngi6.pro/inc/comphelper/scoped_disposing_ptr.hxx:138
#8  comphelper::scoped_disposing_ptr<{anonymous}::ImpTimedRefDev>::TerminateListener::disposing(const com::sun::star::lang::EventObject &) (
    this=0x87bb870, rEvt=...) at /data/opt/libreoffice/master/solver/unxlngi6.pro/inc/comphelper/scoped_disposing_ptr.hxx:122
#9  0xb7a309fc in cppu::OInterfaceContainerHelper::disposeAndClear (this=0x89e1058, rEvt=...)
    at /data/opt/libreoffice/master/cppuhelper/source/interfacecontainer.cxx:316
#10 0xb7a30bf5 in cppu::OMultiTypeInterfaceContainerHelper::disposeAndClear (this=0x80bca48, rEvt=...)
    at /data/opt/libreoffice/master/cppuhelper/source/interfacecontainer.cxx:491
#11 0xb7a2e7d1 in cppu::WeakComponentImplHelperBase::dispose (this=0x80bca30) at /data/opt/libreoffice/master/cppuhelper/source/implbase.cxx:267
#12 0xb7a1ae02 in cppu::WeakComponentImplHelper2<com::sun::star::uno::XComponentContext, com::sun::star::container::XNameContainer>::dispose (
    this=0x80bca30) at /data/opt/libreoffice/master/solver/unxlngi6.pro/inc/cppuhelper/compbase2.hxx:66
#13 0xb7f37c2b in desktop::Desktop::DeInit (this=0xbfffed0c) at /data/opt/libreoffice/master/desktop/source/app/app.cxx:673

vs.

Program received signal SIGSEGV, Segmentation fault.
0xb74b6d6c in hash_iterator_base (b=0x99999999, this=<optimized out>)
    at /data/opt/libreoffice/master/workdir/unxlngi6.pro/UnpackedTarball/boost/boost/unordered/detail/fwd.hpp:225
225	            node_(b ? b->next_ : node_ptr()) {}
(gdb) bt
#0  0xb74b6d6c in hash_iterator_base (b=0x99999999, this=<optimized out>)
    at /data/opt/libreoffice/master/workdir/unxlngi6.pro/UnpackedTarball/boost/boost/unordered/detail/fwd.hpp:225
#1  begin (this=0x8a667c4) at /data/opt/libreoffice/master/workdir/unxlngi6.pro/UnpackedTarball/boost/boost/unordered/detail/fwd.hpp:502
#2  begin (this=0x8a667c4) at /data/opt/libreoffice/master/workdir/unxlngi6.pro/UnpackedTarball/boost/boost/unordered/unordered_map.hpp:253
#3  ServerFont::GarbageCollect (this=0x8a667c0, nMinLruIndex=-1449551463) at /data/opt/libreoffice/master/vcl/generic/glyphs/glyphcache.cxx:399
#4  0xb74b6e84 in GlyphCache::GarbageCollect (this=0x890ed50) at /data/opt/libreoffice/master/vcl/generic/glyphs/glyphcache.cxx:289
...
#11 0xb73ff9b0 in VirtualDevice::~VirtualDevice (this=0x876d5c0, __in_chrg=<optimized out>)
    at /data/opt/libreoffice/master/vcl/source/gdi/virdev.cxx:202
#12 0xb5885593 in (anonymous namespace)::ImpTimedRefDev::~ImpTimedRefDev (this=0x88563d8, __in_chrg=<optimized out>)
    at /data/opt/libreoffice/master/drawinglayer/source/primitive2d/textlayoutdevice.cxx:82
#13 0xb58855da in (anonymous namespace)::ImpTimedRefDev::~ImpTimedRefDev (this=0x88563d8, __in_chrg=<optimized out>)
    at /data/opt/libreoffice/master/drawinglayer/source/primitive2d/textlayoutdevice.cxx:83
#14 0xb5885515 in checked_delete<{anonymous}::ImpTimedRefDev> (x=<optimized out>)
    at /data/opt/libreoffice/master/workdir/unxlngi6.pro/UnpackedTarball/boost/boost/checked_delete.hpp:34
...
#18 0xb5885fdc in comphelper::scoped_disposing_ptr<{anonymous}::ImpTimedRefDev>::~scoped_disposing_ptr(void) (this=0xb5924ef8, 
    __in_chrg=<optimized out>) at /data/opt/libreoffice/master/solver/unxlngi6.pro/inc/comphelper/scoped_disposing_ptr.hxx:86
#19 0xb681d931 in __run_exit_handlers (status=0, listp=0xb6956304, run_list_atexit=true) at exit.c:78
#20 0xb681d9bd in __GI_exit (status=0) at exit.c:100

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



More information about the LibreOffice mailing list