summaryrefslogtreecommitdiff
path: root/svtools
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2017-09-11 17:07:08 +0200
committerStephan Bergmann <sbergman@redhat.com>2017-09-11 17:07:08 +0200
commit2c7d421a3cacb602aabc89c5e49351ae4a5f7846 (patch)
tree6877dbc8e54a65016864987889326a5661750f20 /svtools
parent167876df09254d43ae1f45d658b59f84b5b724e8 (diff)
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
Diffstat (limited to 'svtools')
-rw-r--r--svtools/source/config/itemholder2.cxx23
-rw-r--r--svtools/source/config/itemholder2.hxx1
2 files changed, 8 insertions, 16 deletions
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