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

-- 
[email protected]  <><, Pseudo Engineer, itinerant idiot

_______________________________________________
LibreOffice mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to