[Libreoffice-commits] core.git: svtools/source

Stephan Bergmann sbergman at redhat.com
Mon Sep 11 15:08:23 UTC 2017


 svtools/source/config/itemholder2.cxx |   23 ++++++++---------------
 svtools/source/config/itemholder2.hxx |    1 -
 2 files changed, 8 insertions(+), 16 deletions(-)

New commits:
commit 2c7d421a3cacb602aabc89c5e49351ae4a5f7846
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Sep 11 17:07:08 2017 +0200

    Avoid "ThreadSanitizer: lock-order-inversion (potential deadlock)"
    
    ...during CppunitTest_vcl_lifecycle:
    
    > WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=7827)
    >   Cycle in lock order graph: M526212022946269680 (0x000000000000) => M536063647131142976 (0x000000000000) => M526212022946269680
    >
    >   Mutex M536063647131142976 acquired here while holding mutex M526212022946269680 in main thread:
    >     #0 pthread_mutex_lock compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:3800 (cppunittester+0x45aec7)
    >     #1 osl_acquireMutex sal/osl/unx/mutex.cxx:97:16 (libuno_sal.so.3+0xc1ffa)
    >     #2 osl::Mutex::acquire() include/osl/mutex.hxx:56:20 (libsvtlo.so+0x2f0b88)
    >     #3 osl::ClearableGuard<osl::Mutex>::ClearableGuard(osl::Mutex&) include/osl/mutex.hxx:163:17 (libsvtlo.so+0x39bdaf)
    >     #4 osl::ResettableGuard<osl::Mutex>::ResettableGuard(osl::Mutex&) include/osl/mutex.hxx:208:17 (libsvtlo.so+0x3971ac)
    >     #5 svtools::ItemHolder2::impl_addItem(EItem) svtools/source/config/itemholder2.cxx:92:33 (libsvtlo.so+0x395f9e)
    >     #6 svtools::ItemHolder2::holdConfigItem(EItem) svtools/source/config/itemholder2.cxx:80:14 (libsvtlo.so+0x395eaf)
    >     #7 SvtHelpOptions::SvtHelpOptions() svtools/source/config/helpopt.cxx:250:9 (libsvtlo.so+0x38e571)
    >     #8 SfxApplication::GetOrCreate() sfx2/source/appl/app.cxx:159:53 (libsfxlo.so+0x3afeef)
    >     #9 (anonymous namespace)::SfxGlobalEvents_Impl::SfxGlobalEvents_Impl(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) sfx2/source/notify/globalevents.cxx:149:5 (libsfxlo.so+0xc5f054)
    >     #10 (anonymous namespace)::Instance::Instance(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) sfx2/source/notify/globalevents.cxx:422:50 (libsfxlo.so+0xc5eca7)
    >     #11 rtl::StaticWithArg<(anonymous namespace)::Instance, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext>, (anonymous namespace)::Singleton>::get(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) include/rtl/instance.hxx:455:18 (libsfxlo.so+0xc5ebc6)
    >     #12 com_sun_star_comp_sfx2_GlobalEventBroadcaster_get_implementation sfx2/source/notify/globalevents.cxx:441:17 (libsfxlo.so+0xc5ea16)
    >     #13 std::_Function_handler<com::sun::star::uno::XInterface* (com::sun::star::uno::XComponentContext*, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&), com::sun::star::uno::XInterface* (*)(com::sun::star::uno::XComponentContext*, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&)>::_M_invoke(std::_Any_data const&, com::sun::star::uno::XComponentContext*&&, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:1716:9 (libuno_cppuhelpergcc3.so.3+0x19b166)
    >     #14 std::function<com::sun::star::uno::XInterface* (com::sun::star::uno::XComponentContext*, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&)>::operator()(com::sun::star::uno::XComponentContext*, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&) const /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:2127:14 (libuno_cppuhelpergcc3.so.3+0x14f50d)
    >     #15 cppuhelper::ServiceManager::Data::Implementation::createInstance(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, bool) cppuhelper/source/servicemanager.cxx:665:13 (libuno_cppuhelpergcc3.so.3+0x134ccb)
    >     #16 (anonymous namespace)::SingletonFactory::createInstanceWithContext(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) cppuhelper/source/servicemanager.cxx:521:29 (libuno_cppuhelpergcc3.so.3+0x14938e)
    >     #17 non-virtual thunk to (anonymous namespace)::SingletonFactory::createInstanceWithContext(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) cppuhelper/source/servicemanager.cxx (libuno_cppuhelpergcc3.so.3+0x1494e6)
    >     #18 cppu::ComponentContext::lookupMap(rtl::OUString const&) cppuhelper/source/component_context.cxx:308:25 (libuno_cppuhelpergcc3.so.3+0x5afc9)
    >     #19 cppu::ComponentContext::getValueByName(rtl::OUString const&) cppuhelper/source/component_context.cxx:382:14 (libuno_cppuhelpergcc3.so.3+0x5c234)
    >     #20 non-virtual thunk to cppu::ComponentContext::getValueByName(rtl::OUString const&) cppuhelper/source/component_context.cxx (libuno_cppuhelpergcc3.so.3+0x5c406)
    >     #21 com::sun::star::frame::theGlobalEventBroadcaster::get(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/frame/theGlobalEventBroadcaster.hpp:36:22 (libvcllo.so+0x5e785b)
    >     #22 Dialog::StateChanged(StateChangedType) vcl/source/window/dialog.cxx:694:84 (libvcllo.so+0x5e210a)
    >     #23 vcl::Window::CompatStateChanged(StateChangedType) vcl/source/window/window.cxx:3704:5 (libvcllo.so+0x861862)
    >     #24 vcl::Window::Show(bool, ShowFlags) vcl/source/window/window.cxx:2281:9 (libvcllo.so+0x85e752)
    >     #25 LifecycleTest::testLeakage() vcl/qa/cppunit/lifecycle.cxx:309:25 (libtest_vcl_lifecycle.so+0x52bb6)
    >     #26 void std::__invoke_impl<void, void (LifecycleTest::* const&)(), LifecycleTest*&>(std::__invoke_memfun_deref, void (LifecycleTest::* const&)(), LifecycleTest*&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:227:14 (libtest_vcl_lifecycle.so+0x806fe)
    >     #27 std::result_of<void (LifecycleTest::* const&(LifecycleTest*&))()>::type std::__invoke<void (LifecycleTest::* const&)(), LifecycleTest*&>(void (LifecycleTest::* const&)(), LifecycleTest*&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:250:14 (libtest_vcl_lifecycle.so+0x805ed)
    >     #28 _ZNKSt12_Mem_fn_baseIM13LifecycleTestFvvELb1EEclIJRPS0_EEEDTclsr3stdE8__invokedtdefpT6_M_pmfspclsr3stdE7forwardIT_Efp_EEEDpOS7_ /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:604:11 (libtest_vcl_lifecycle.so+0x804cb)
    >     #29 void std::_Bind<std::_Mem_fn<void (LifecycleTest::*)()> (LifecycleTest*)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:933:11 (libtest_vcl_lifecycle.so+0x8042b)
    >     #30 void std::_Bind<std::_Mem_fn<void (LifecycleTest::*)()> (LifecycleTest*)>::operator()<, void>() /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:991:17 (libtest_vcl_lifecycle.so+0x802f6)
    >     #31 std::_Function_handler<void (), std::_Bind<std::_Mem_fn<void (LifecycleTest::*)()> (LifecycleTest*)> >::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:1731:2 (libtest_vcl_lifecycle.so+0x7fbda)
    >     #32 std::function<void ()>::operator()() const /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:2127:14 (libtest_vcl_lifecycle.so+0x80a3e)
    >     #33 CppUnit::TestCaller<LifecycleTest>::runTest() workdir/UnpackedTarball/cppunit/include/cppunit/TestCaller.h:175:7 (libtest_vcl_lifecycle.so+0x7f32c)
    >     #34 CppUnit::TestCaseMethodFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:32:5 (libcppunit-1.14.so.0+0xd61d2)
    >     #35 (anonymous namespace)::Protector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) test/source/vclbootstrapprotector.cxx:39:14 (libvclbootstrapprotector.so+0x1114)
    >     #36 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614)
    >     #37 (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx:89:12 (unobootstrapprotector.so+0x2204)
    >     #38 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614)
    >     #39 (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unotest/source/cpp/unoexceptionprotector/unoexceptionprotector.cxx:63:16 (unoexceptionprotector.so+0x23e9)
    >     #40 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614)
    >     #41 CppUnit::DefaultProtector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) workdir/UnpackedTarball/cppunit/src/cppunit/DefaultProtector.cpp:15:12 (libcppunit-1.14.so.0+0xa57ad)
    >     #42 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614)
    >     #43 CppUnit::ProtectorChain::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:86:18 (libcppunit-1.14.so.0+0xc4a96)
    >     #44 CppUnit::TestResult::protect(CppUnit::Functor const&, CppUnit::Test*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:182:28 (libcppunit-1.14.so.0+0xf4714)
    >     #45 CppUnit::TestCase::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:91:13 (libcppunit-1.14.so.0+0xd5750)
    >     #46 CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30 (libcppunit-1.14.so.0+0xd6d5a)
    >     #47 CppUnit::TestComposite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3 (libcppunit-1.14.so.0+0xd6a2e)
    >     #48 CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30 (libcppunit-1.14.so.0+0xd6d5a)
    >     #49 CppUnit::TestComposite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3 (libcppunit-1.14.so.0+0xd6a2e)
    >     #50 CppUnit::TestRunner::WrappingSuite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:47:27 (libcppunit-1.14.so.0+0x10282c)
    >     #51 CppUnit::TestResult::runTest(CppUnit::Test*) workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:149:9 (libcppunit-1.14.so.0+0xf4223)
    >     #52 CppUnit::TestRunner::run(CppUnit::TestResult&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:96:14 (libcppunit-1.14.so.0+0x102c76)
    >     #53 (anonymous namespace)::ProtectedFixtureFunctor::run() const sal/cppunittester/cppunittester.cxx:316:20 (cppunittester+0x4bd658)
    >     #54 sal_main() sal/cppunittester/cppunittester.cxx:466:20 (cppunittester+0x4bc28e)
    >     #55 main sal/cppunittester/cppunittester.cxx:373:1 (cppunittester+0x4bbb05)
    >
    >   Mutex M526212022946269680 previously acquired by the same thread here:
    >     #0 pthread_mutex_lock compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:3800 (cppunittester+0x45aec7)
    >     #1 osl_acquireMutex sal/osl/unx/mutex.cxx:97:16 (libuno_sal.so.3+0xc1ffa)
    >     #2 osl::Mutex::acquire() include/osl/mutex.hxx:56:20 (libsvtlo.so+0x2f0b88)
    >     #3 osl::Guard<osl::Mutex>::Guard(osl::Mutex&) include/osl/mutex.hxx:129:17 (libsvtlo.so+0x353f1f)
    >     #4 SvtHelpOptions::SvtHelpOptions() svtools/source/config/helpopt.cxx:243:23 (libsvtlo.so+0x38e48d)
    >     #5 SfxApplication::GetOrCreate() sfx2/source/appl/app.cxx:159:53 (libsfxlo.so+0x3afeef)
    >     #6 (anonymous namespace)::SfxGlobalEvents_Impl::SfxGlobalEvents_Impl(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) sfx2/source/notify/globalevents.cxx:149:5 (libsfxlo.so+0xc5f054)
    >     #7 (anonymous namespace)::Instance::Instance(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) sfx2/source/notify/globalevents.cxx:422:50 (libsfxlo.so+0xc5eca7)
    >     #8 rtl::StaticWithArg<(anonymous namespace)::Instance, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext>, (anonymous namespace)::Singleton>::get(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) include/rtl/instance.hxx:455:18 (libsfxlo.so+0xc5ebc6)
    >     #9 com_sun_star_comp_sfx2_GlobalEventBroadcaster_get_implementation sfx2/source/notify/globalevents.cxx:441:17 (libsfxlo.so+0xc5ea16)
    >     #10 std::_Function_handler<com::sun::star::uno::XInterface* (com::sun::star::uno::XComponentContext*, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&), com::sun::star::uno::XInterface* (*)(com::sun::star::uno::XComponentContext*, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&)>::_M_invoke(std::_Any_data const&, com::sun::star::uno::XComponentContext*&&, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:1716:9 (libuno_cppuhelpergcc3.so.3+0x19b166)
    >     #11 std::function<com::sun::star::uno::XInterface* (com::sun::star::uno::XComponentContext*, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&)>::operator()(com::sun::star::uno::XComponentContext*, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&) const /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:2127:14 (libuno_cppuhelpergcc3.so.3+0x14f50d)
    >     #12 cppuhelper::ServiceManager::Data::Implementation::createInstance(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, bool) cppuhelper/source/servicemanager.cxx:665:13 (libuno_cppuhelpergcc3.so.3+0x134ccb)
    >     #13 (anonymous namespace)::SingletonFactory::createInstanceWithContext(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) cppuhelper/source/servicemanager.cxx:521:29 (libuno_cppuhelpergcc3.so.3+0x14938e)
    >     #14 non-virtual thunk to (anonymous namespace)::SingletonFactory::createInstanceWithContext(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) cppuhelper/source/servicemanager.cxx (libuno_cppuhelpergcc3.so.3+0x1494e6)
    >     #15 cppu::ComponentContext::lookupMap(rtl::OUString const&) cppuhelper/source/component_context.cxx:308:25 (libuno_cppuhelpergcc3.so.3+0x5afc9)
    >     #16 cppu::ComponentContext::getValueByName(rtl::OUString const&) cppuhelper/source/component_context.cxx:382:14 (libuno_cppuhelpergcc3.so.3+0x5c234)
    >     #17 non-virtual thunk to cppu::ComponentContext::getValueByName(rtl::OUString const&) cppuhelper/source/component_context.cxx (libuno_cppuhelpergcc3.so.3+0x5c406)
    >     #18 com::sun::star::frame::theGlobalEventBroadcaster::get(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/frame/theGlobalEventBroadcaster.hpp:36:22 (libvcllo.so+0x5e785b)
    >     #19 Dialog::StateChanged(StateChangedType) vcl/source/window/dialog.cxx:694:84 (libvcllo.so+0x5e210a)
    >     #20 vcl::Window::CompatStateChanged(StateChangedType) vcl/source/window/window.cxx:3704:5 (libvcllo.so+0x861862)
    >     #21 vcl::Window::Show(bool, ShowFlags) vcl/source/window/window.cxx:2281:9 (libvcllo.so+0x85e752)
    >     #22 LifecycleTest::testLeakage() vcl/qa/cppunit/lifecycle.cxx:309:25 (libtest_vcl_lifecycle.so+0x52bb6)
    >     #23 void std::__invoke_impl<void, void (LifecycleTest::* const&)(), LifecycleTest*&>(std::__invoke_memfun_deref, void (LifecycleTest::* const&)(), LifecycleTest*&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:227:14 (libtest_vcl_lifecycle.so+0x806fe)
    >     #24 std::result_of<void (LifecycleTest::* const&(LifecycleTest*&))()>::type std::__invoke<void (LifecycleTest::* const&)(), LifecycleTest*&>(void (LifecycleTest::* const&)(), LifecycleTest*&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:250:14 (libtest_vcl_lifecycle.so+0x805ed)
    >     #25 _ZNKSt12_Mem_fn_baseIM13LifecycleTestFvvELb1EEclIJRPS0_EEEDTclsr3stdE8__invokedtdefpT6_M_pmfspclsr3stdE7forwardIT_Efp_EEEDpOS7_ /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:604:11 (libtest_vcl_lifecycle.so+0x804cb)
    >     #26 void std::_Bind<std::_Mem_fn<void (LifecycleTest::*)()> (LifecycleTest*)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:933:11 (libtest_vcl_lifecycle.so+0x8042b)
    >     #27 void std::_Bind<std::_Mem_fn<void (LifecycleTest::*)()> (LifecycleTest*)>::operator()<, void>() /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:991:17 (libtest_vcl_lifecycle.so+0x802f6)
    >     #28 std::_Function_handler<void (), std::_Bind<std::_Mem_fn<void (LifecycleTest::*)()> (LifecycleTest*)> >::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:1731:2 (libtest_vcl_lifecycle.so+0x7fbda)
    >     #29 std::function<void ()>::operator()() const /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:2127:14 (libtest_vcl_lifecycle.so+0x80a3e)
    >     #30 CppUnit::TestCaller<LifecycleTest>::runTest() workdir/UnpackedTarball/cppunit/include/cppunit/TestCaller.h:175:7 (libtest_vcl_lifecycle.so+0x7f32c)
    >     #31 CppUnit::TestCaseMethodFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:32:5 (libcppunit-1.14.so.0+0xd61d2)
    >     #32 (anonymous namespace)::Protector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) test/source/vclbootstrapprotector.cxx:39:14 (libvclbootstrapprotector.so+0x1114)
    >     #33 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614)
    >     #34 (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx:89:12 (unobootstrapprotector.so+0x2204)
    >     #35 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614)
    >     #36 (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unotest/source/cpp/unoexceptionprotector/unoexceptionprotector.cxx:63:16 (unoexceptionprotector.so+0x23e9)
    >     #37 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614)
    >     #38 CppUnit::DefaultProtector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) workdir/UnpackedTarball/cppunit/src/cppunit/DefaultProtector.cpp:15:12 (libcppunit-1.14.so.0+0xa57ad)
    >     #39 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614)
    >     #40 CppUnit::ProtectorChain::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:86:18 (libcppunit-1.14.so.0+0xc4a96)
    >     #41 CppUnit::TestResult::protect(CppUnit::Functor const&, CppUnit::Test*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:182:28 (libcppunit-1.14.so.0+0xf4714)
    >     #42 CppUnit::TestCase::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:91:13 (libcppunit-1.14.so.0+0xd5750)
    >     #43 CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30 (libcppunit-1.14.so.0+0xd6d5a)
    >     #44 CppUnit::TestComposite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3 (libcppunit-1.14.so.0+0xd6a2e)
    >     #45 CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30 (libcppunit-1.14.so.0+0xd6d5a)
    >     #46 CppUnit::TestComposite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3 (libcppunit-1.14.so.0+0xd6a2e)
    >     #47 CppUnit::TestRunner::WrappingSuite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:47:27 (libcppunit-1.14.so.0+0x10282c)
    >     #48 CppUnit::TestResult::runTest(CppUnit::Test*) workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:149:9 (libcppunit-1.14.so.0+0xf4223)
    >     #49 CppUnit::TestRunner::run(CppUnit::TestResult&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:96:14 (libcppunit-1.14.so.0+0x102c76)
    >     #50 (anonymous namespace)::ProtectedFixtureFunctor::run() const sal/cppunittester/cppunittester.cxx:316:20 (cppunittester+0x4bd658)
    >     #51 sal_main() sal/cppunittester/cppunittester.cxx:466:20 (cppunittester+0x4bc28e)
    >     #52 main sal/cppunittester/cppunittester.cxx:373:1 (cppunittester+0x4bbb05)
    >
    >   Mutex M526212022946269680 acquired here while holding mutex M536063647131142976 in main thread:
    >     #0 pthread_mutex_lock compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:3800 (cppunittester+0x45aec7)
    >     #1 osl_acquireMutex sal/osl/unx/mutex.cxx:97:16 (libuno_sal.so.3+0xc1ffa)
    >     #2 osl::Mutex::acquire() include/osl/mutex.hxx:56:20 (libsvtlo.so+0x2f0b88)
    >     #3 osl::Guard<osl::Mutex>::Guard(osl::Mutex&) include/osl/mutex.hxx:129:17 (libsvtlo.so+0x353f1f)
    >     #4 SvtHelpOptions::~SvtHelpOptions() svtools/source/config/helpopt.cxx:257:23 (libsvtlo.so+0x38e6df)
    >     #5 SvtHelpOptions::~SvtHelpOptions() svtools/source/config/helpopt.cxx:255:1 (libsvtlo.so+0x38e7dc)
    >     #6 svtools::ItemHolder2::impl_deleteItem(TItemInfo&) svtools/source/config/itemholder2.cxx:171:9 (libsvtlo.so+0x396829)
    >     #7 svtools::ItemHolder2::impl_releaseAllItems() svtools/source/config/itemholder2.cxx:122:9 (libsvtlo.so+0x395ca9)
    >     #8 svtools::ItemHolder2::disposing(com::sun::star::lang::EventObject const&) svtools/source/config/itemholder2.cxx:86:5 (libsvtlo.so+0x396224)
    >     #9 non-virtual thunk to svtools::ItemHolder2::disposing(com::sun::star::lang::EventObject const&) svtools/source/config/itemholder2.cxx (libsvtlo.so+0x39628c)
    >     #10 cppu::OInterfaceContainerHelper::disposeAndClear(com::sun::star::lang::EventObject const&) cppuhelper/source/interfacecontainer.cxx:300:23 (libuno_cppuhelpergcc3.so.3+0xba149)
    >     #11 cppu::OMultiTypeInterfaceContainerHelper::disposeAndClear(com::sun::star::lang::EventObject const&) cppuhelper/source/interfacecontainer.cxx:472:38 (libuno_cppuhelpergcc3.so.3+0xbb6a5)
    >     #12 cppu::WeakComponentImplHelperBase::dispose() cppuhelper/source/implbase.cxx:101:30 (libuno_cppuhelpergcc3.so.3+0xb0de8)
    >     #13 cppu::PartialWeakComponentImplHelper<com::sun::star::lang::XServiceInfo, com::sun::star::lang::XMultiServiceFactory, com::sun::star::util::XRefreshable, com::sun::star::util::XFlushable, com::sun::star::lang::XLocalizable>::dispose() include/cppuhelper/compbase.hxx:93:36 (libconfigmgrlo.so+0x119098)
    >     #14 non-virtual thunk to cppu::PartialWeakComponentImplHelper<com::sun::star::lang::XServiceInfo, com::sun::star::lang::XMultiServiceFactory, com::sun::star::util::XRefreshable, com::sun::star::util::XFlushable, com::sun::star::lang::XLocalizable>::dispose() include/cppuhelper/compbase.hxx (libconfigmgrlo.so+0x11939c)
    >     #15 cppu::ComponentContext::disposing() cppuhelper/source/component_context.cxx:451:28 (libuno_cppuhelpergcc3.so.3+0x5cdc0)
    >     #16 cppu::WeakComponentImplHelperBase::dispose() cppuhelper/source/implbase.cxx:102:17 (libuno_cppuhelpergcc3.so.3+0xb0e09)
    >     #17 cppu::PartialWeakComponentImplHelper<com::sun::star::uno::XComponentContext, com::sun::star::container::XNameContainer>::dispose() include/cppuhelper/compbase.hxx:93:36 (libuno_cppuhelpergcc3.so.3+0x65a88)
    >     #18 non-virtual thunk to cppu::PartialWeakComponentImplHelper<com::sun::star::uno::XComponentContext, com::sun::star::container::XNameContainer>::dispose() include/cppuhelper/compbase.hxx (libuno_cppuhelpergcc3.so.3+0x65d8c)
    >     #19 (anonymous namespace)::Hook::deinitHook((anonymous namespace)::Hook*, LinkParamNone*) test/source/setupvcl.cxx:53:50 (libtest-setupvcl.so+0x2aa0)
    >     #20 (anonymous namespace)::Hook::LinkStubdeinitHook(void*, LinkParamNone*) test/source/setupvcl.cxx:37:1 (libtest-setupvcl.so+0x27f8)
    >     #21 Link<LinkParamNone*, void>::Call(LinkParamNone*) const include/tools/link.hxx:84:45 (libvcllo.so+0x996ae0)
    >     #22 DeInitVCL() vcl/source/app/svmain.cxx:519:35 (libvcllo.so+0x10f4f06)
    >     #23 (anonymous namespace)::Protector::~Protector() test/source/vclbootstrapprotector.cxx:31:9 (libvclbootstrapprotector.so+0x100a)
    >     #24 (anonymous namespace)::Protector::~Protector() test/source/vclbootstrapprotector.cxx:30:35 (libvclbootstrapprotector.so+0x109c)
    >     #25 CppUnit::ProtectorChain::pop() workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:56:3 (libcppunit-1.14.so.0+0xc46cb)
    >     #26 CppUnit::TestResult::popProtector() workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:196:21 (libcppunit-1.14.so.0+0xf4873)
    >     #27 (anonymous namespace)::ProtectedFixtureFunctor::run() const sal/cppunittester/cppunittester.cxx:325:20 (cppunittester+0x4bd84f)
    >     #28 sal_main() sal/cppunittester/cppunittester.cxx:466:20 (cppunittester+0x4bc28e)
    >     #29 main sal/cppunittester/cppunittester.cxx:373:1 (cppunittester+0x4bbb05)
    >
    >   Mutex M536063647131142976 previously acquired by the same thread here:
    >     #0 pthread_mutex_lock compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:3800 (cppunittester+0x45aec7)
    >     #1 osl_acquireMutex sal/osl/unx/mutex.cxx:97:16 (libuno_sal.so.3+0xc1ffa)
    >     #2 osl::Mutex::acquire() include/osl/mutex.hxx:56:20 (libsvtlo.so+0x2f0b88)
    >     #3 osl::ClearableGuard<osl::Mutex>::ClearableGuard(osl::Mutex&) include/osl/mutex.hxx:163:17 (libsvtlo.so+0x39bdaf)
    >     #4 osl::ResettableGuard<osl::Mutex>::ResettableGuard(osl::Mutex&) include/osl/mutex.hxx:208:17 (libsvtlo.so+0x3971ac)
    >     #5 svtools::ItemHolder2::impl_releaseAllItems() svtools/source/config/itemholder2.cxx:114:33 (libsvtlo.so+0x395bfc)
    >     #6 svtools::ItemHolder2::disposing(com::sun::star::lang::EventObject const&) svtools/source/config/itemholder2.cxx:86:5 (libsvtlo.so+0x396224)
    >     #7 non-virtual thunk to svtools::ItemHolder2::disposing(com::sun::star::lang::EventObject const&) svtools/source/config/itemholder2.cxx (libsvtlo.so+0x39628c)
    >     #8 cppu::OInterfaceContainerHelper::disposeAndClear(com::sun::star::lang::EventObject const&) cppuhelper/source/interfacecontainer.cxx:300:23 (libuno_cppuhelpergcc3.so.3+0xba149)
    >     #9 cppu::OMultiTypeInterfaceContainerHelper::disposeAndClear(com::sun::star::lang::EventObject const&) cppuhelper/source/interfacecontainer.cxx:472:38 (libuno_cppuhelpergcc3.so.3+0xbb6a5)
    >     #10 cppu::WeakComponentImplHelperBase::dispose() cppuhelper/source/implbase.cxx:101:30 (libuno_cppuhelpergcc3.so.3+0xb0de8)
    >     #11 cppu::PartialWeakComponentImplHelper<com::sun::star::lang::XServiceInfo, com::sun::star::lang::XMultiServiceFactory, com::sun::star::util::XRefreshable, com::sun::star::util::XFlushable, com::sun::star::lang::XLocalizable>::dispose() include/cppuhelper/compbase.hxx:93:36 (libconfigmgrlo.so+0x119098)
    >     #12 non-virtual thunk to cppu::PartialWeakComponentImplHelper<com::sun::star::lang::XServiceInfo, com::sun::star::lang::XMultiServiceFactory, com::sun::star::util::XRefreshable, com::sun::star::util::XFlushable, com::sun::star::lang::XLocalizable>::dispose() include/cppuhelper/compbase.hxx (libconfigmgrlo.so+0x11939c)
    >     #13 cppu::ComponentContext::disposing() cppuhelper/source/component_context.cxx:451:28 (libuno_cppuhelpergcc3.so.3+0x5cdc0)
    >     #14 cppu::WeakComponentImplHelperBase::dispose() cppuhelper/source/implbase.cxx:102:17 (libuno_cppuhelpergcc3.so.3+0xb0e09)
    >     #15 cppu::PartialWeakComponentImplHelper<com::sun::star::uno::XComponentContext, com::sun::star::container::XNameContainer>::dispose() include/cppuhelper/compbase.hxx:93:36 (libuno_cppuhelpergcc3.so.3+0x65a88)
    >     #16 non-virtual thunk to cppu::PartialWeakComponentImplHelper<com::sun::star::uno::XComponentContext, com::sun::star::container::XNameContainer>::dispose() include/cppuhelper/compbase.hxx (libuno_cppuhelpergcc3.so.3+0x65d8c)
    >     #17 (anonymous namespace)::Hook::deinitHook((anonymous namespace)::Hook*, LinkParamNone*) test/source/setupvcl.cxx:53:50 (libtest-setupvcl.so+0x2aa0)
    >     #18 (anonymous namespace)::Hook::LinkStubdeinitHook(void*, LinkParamNone*) test/source/setupvcl.cxx:37:1 (libtest-setupvcl.so+0x27f8)
    >     #19 Link<LinkParamNone*, void>::Call(LinkParamNone*) const include/tools/link.hxx:84:45 (libvcllo.so+0x996ae0)
    >     #20 DeInitVCL() vcl/source/app/svmain.cxx:519:35 (libvcllo.so+0x10f4f06)
    >     #21 (anonymous namespace)::Protector::~Protector() test/source/vclbootstrapprotector.cxx:31:9 (libvclbootstrapprotector.so+0x100a)
    >     #22 (anonymous namespace)::Protector::~Protector() test/source/vclbootstrapprotector.cxx:30:35 (libvclbootstrapprotector.so+0x109c)
    >     #23 CppUnit::ProtectorChain::pop() workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:56:3 (libcppunit-1.14.so.0+0xc46cb)
    >     #24 CppUnit::TestResult::popProtector() workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:196:21 (libcppunit-1.14.so.0+0xf4873)
    >     #25 (anonymous namespace)::ProtectedFixtureFunctor::run() const sal/cppunittester/cppunittester.cxx:325:20 (cppunittester+0x4bd84f)
    >     #26 sal_main() sal/cppunittester/cppunittester.cxx:466:20 (cppunittester+0x4bc28e)
    >     #27 main sal/cppunittester/cppunittester.cxx:373:1 (cppunittester+0x4bbb05)
    
    Change-Id: I5995dd31843a673ad006b7a4472c159b53afbcb3

diff --git a/svtools/source/config/itemholder2.cxx b/svtools/source/config/itemholder2.cxx
index bdfb27387a8d..5989157f5e8b 100644
--- a/svtools/source/config/itemholder2.cxx
+++ b/svtools/source/config/itemholder2.cxx
@@ -111,15 +111,18 @@ void ItemHolder2::impl_addItem(EItem eItem)
 
 void ItemHolder2::impl_releaseAllItems()
 {
-    ::osl::ResettableMutexGuard aLock(m_aLock);
+    TItems items;
+    {
+        ::osl::ResettableMutexGuard aLock(m_aLock);
+        items.swap(m_lItems);
+    }
 
     TItems::iterator pIt;
-    for (  pIt  = m_lItems.begin();
-           pIt != m_lItems.end()  ;
+    for (  pIt  = items.begin();
+           pIt != items.end()  ;
          ++pIt                    )
     {
-        TItemInfo& rInfo = *pIt;
-        impl_deleteItem(rInfo);
+        delete pIt->pItem;
     }
     m_lItems.clear();
 }
@@ -163,16 +166,6 @@ void ItemHolder2::impl_newItem(TItemInfo& rItem)
     }
 }
 
-
-void ItemHolder2::impl_deleteItem(TItemInfo& rItem)
-{
-    if (rItem.pItem)
-    {
-        delete rItem.pItem;
-        rItem.pItem = nullptr;
-    }
-}
-
 } // namespace svtools
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svtools/source/config/itemholder2.hxx b/svtools/source/config/itemholder2.hxx
index e4bc8c3ca17b..bf344e4f3b92 100644
--- a/svtools/source/config/itemholder2.hxx
+++ b/svtools/source/config/itemholder2.hxx
@@ -57,7 +57,6 @@ class ItemHolder2 : private ItemHolderMutexBase
         void impl_addItem(EItem eItem);
         void impl_releaseAllItems();
         static void impl_newItem(TItemInfo& rItem);
-        static void impl_deleteItem(TItemInfo& rItem);
 };
 
 } // namespace svtools


More information about the Libreoffice-commits mailing list