Hi there,
I was looking again at adding comphelper to libmerged and found that
only problem visible in tests is caused by static
WeakReference<XFrame2> m_xCloserFrame from
framework/source/services/frame.cxx
I am getting crashes at exit like below:
#0 0xffffffff in TYPELIB_DANGER_GET(typelib_TypeDescription**,
typelib_TypeDescriptionReference*) (ppMacroTypeDescr=0xbfff6524,
pMacroTypeRef=0x85c8b70) at
/home/matus/git/master/include/typelib/typedescription.h:1008
#1 0xffffffff in uno_type_sequence_construct(uno_Sequence**,
typelib_TypeDescriptionReference*, void*, sal_Int32, uno_AcquireFunc)
(ppSequence=0xbfff65d8, pType=0x85c8b70, pElements=0x0, len=17,
acquire=0xb708a4a0 <com::sun::star::uno::cpp_acquire(void*)>)
at /home/matus/git/master/cppu/source/uno/sequence.cxx:695
#2 0xffffffff in
com::sun::star::uno::Sequence<com::sun::star::uno::Reference<com::sun::star::uno::XInterface>
::Sequence(long) (this=0xbfff65d8, len=17) at
/home/matus/git/master/include/com/sun/star/uno/Sequence.hxx:89
#3 0xffffffff in
cppu::sequenceRemoveElementAt(com::sun::star::uno::Sequence<com::sun::star::uno::Reference<com::sun::star::uno::XInterface>
&, long) (rSeq=uno::Sequence of length 18 = {...}, index=14) at
/home/matus/git/master/cppuhelper/source/interfacecontainer.cxx:54
#4 0xffffffff in
cppu::OInterfaceContainerHelper::removeInterface(com::sun::star::uno::Reference<com::sun::star::uno::XInterface>
const&) (this=0x86b1f5c, rListener=uno::Reference to
(com::sun::star::uno::OWeakRefListener *) 0x86c38a0)
at /home/matus/git/master/cppuhelper/source/interfacecontainer.cxx:255
#5 0xffffffff in
cppu::OWeakConnectionPoint::removeReference(com::sun::star::uno::Reference<com::sun::star::uno::XReference>
const&) (this=0x86b1f50, rRef=uno::Reference to
(com::sun::star::uno::OWeakRefListener *) 0x86c38a0) at
/home/matus/git/master/cppuhelper/source/weak.cxx:166
#6 0xffffffff in com::sun::star::uno::WeakReferenceHelper::clear()
(this=0xb6e82600 <(anonymous namespace)::Frame::m_xCloserFrame>)
at /home/matus/git/master/cppuhelper/source/weak.cxx:443
#7 0xffffffff in
com::sun::star::uno::WeakReferenceHelper::~WeakReferenceHelper()
(this=0xb6e82600 <(anonymous namespace)::Frame::m_xCloserFrame>)
at /home/matus/git/master/cppuhelper/source/weak.cxx:482
#8 0xffffffff in
com::sun::star::uno::WeakReference<com::sun::star::frame::XFrame2>::~WeakReference()
(this=0xb6e82600 <(anonymous namespace)::Frame::m_xCloserFrame>) at
/home/matus/git/master/include/cppuhelper/weakref.hxx:122
#9 0xffffffff in __run_exit_handlers (status=status@entry=0,
listp=0xb7d063c4 <__exit_funcs>,
run_list_atexit=run_list_atexit@entry=true)
at exit.c:82
#10 0xffffffff in __GI_exit (status=0) at exit.c:104
#11 0xffffffff in __libc_start_main (main=0x804af00 <main(int,
char**)>, argc=22, argv=0xbfff6864, init=
0x8058920 <__libc_csu_init>, fini=0x8058990 <__libc_csu_fini>,
rtld_fini=0xb7fed660 <_dl_fini>, stack_end=0xbfff685c) at
libc-start.c:319
#12 0x0804ae2f in _start () at ../sysdeps/i386/start.S:115
And I would like to get help with fixing this.
There are more static WeakReferences.
I was able to work around the problem e.g. by commenting out
m_pImpl->m_XWeakConnectionPoint->removeReference in cppuhelper/source/weak.cxx
What should be done here?
1, find out why it crashes and fix the problem? I thought it would be
hard and did not try
2, Possibly this work-around solution above is acceptable?
3, kill all static WeakReferences - in the case of m_xCloserFrame,
perhaps it could be plain pointer?
4, something else?
When comphelper is in, we could add ucbhelper and i18nlangtag too.
Thanks,
Matus
Context
- problems with static WeakReference when comphelper is in libmerged · Matúš Kukan
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.