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

Stephan Bergmann sbergman at redhat.com
Sat Feb 22 03:56:50 PST 2014


 svtools/source/config/miscopt.cxx |    3 +++
 1 file changed, 3 insertions(+)

New commits:
commit d41c58164f8e743b9bf7a8983174f71771872472
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Sat Feb 22 12:49:04 2014 +0100

    Strategic SolarMutexGuard
    
    ...seen CppunitTest_dbaccess_dialog_save fail with
    > abort
    > __assert_rtn
    > ImplDbgTestSolarMutex at vcl/source/app/dbggui.cxx:1678
    > DbgFunc at tools/source/debug/debug.cxx:1123
    > DbgTestSolarMutex at debug.hxx:286
    > OutputDevice::ImplGetGraphics at vcl/source/gdi/outdev.cxx:525
    > OutputDevice::GetFontCharMap at vcl/source/gdi/outdev3.cxx:7740
    > OutputDevice::HasGlyphs at vcl/source/gdi/outdev3.cxx:7810
    > Window::ImplCheckUIFont at vcl/source/window/window.cxx:447
    > Window::ImplUpdateGlobalSettings at vcl/source/window/window.cxx:471
    > Application::MergeSystemSettings at vcl/source/app/svapp.cxx:495
    > SvtMiscOptions_Impl::SetIconTheme at svtools/source/config/miscopt.cxx:592
    > SvtMiscOptions_Impl::SetIconThemeAutomatically at svtools/source/config/miscopt.cxx:934
    > SvtMiscOptions_Impl::Load at svtools/source/config/miscopt.cxx:514
    > SvtMiscOptions_Impl at svtools/source/config/miscopt.cxx:299
    > SvtMiscOptions_Impl at svtools/source/config/miscopt.cxx:425
    > SvtMiscOptions at svtools/source/config/miscopt.cxx:753
    > SvtMiscOptions at svtools/source/config/miscopt.cxx:756
    > connectivity::DriversConfigImpl::Load at connectivity/source/commontools/DriversConfig.cxx:106
    > connectivity::DriversConfigImpl::getInstalledDrivers at DriversConfig.hxx:53
    > connectivity::DriversConfig::getURLs at connectivity/source/commontools/DriversConfig.cxx:243
    > ODsnTypeCollection at dbaccess/source/core/misc/dsntypes.cxx:60
    > ODsnTypeCollection at dbaccess/source/core/misc/dsntypes.cxx:71
    > DatasourceURLListener at dbaccess/source/filter/xml/xmlfilter.cxx:183
    > DatasourceURLListener at dbaccess/source/filter/xml/xmlfilter.cxx:183
    > dbaxml::ODBFilter::implImport at dbaccess/source/filter/xml/xmlfilter.cxx:451
    > dbaxml::ODBFilter::filter at dbaccess/source/filter/xml/xmlfilter.cxx:404
    > non-virtual thunk to dbaxml::ODBFilter::filterat dbaccess/source/filter/xml/xmlfilter.cxx:415
    > dbaccess::ODatabaseDocument::impl_import_nolck_throw at dbaccess/source/core/dataaccess/databasedocument.cxx:520
    > dbaccess::ODatabaseDocument::load at dbaccess/source/core/dataaccess/databasedocument.cxx:585
    > non-virtual thunk to dbaccess::ODatabaseDocument::loadat dbaccess/source/core/dataaccess/databasedocument.cxx:602
    > dbaxml::DBContentLoader::load at dbaccess/source/filter/xml/dbloader2.cxx:484
    > non-virtual thunk to dbaxml::DBContentLoader::loadat dbaccess/source/filter/xml/dbloader2.cxx:553
    > framework::LoadEnv::impl_loadContent at framework/source/loadenv/loadenv.cxx:1177
    > framework::LoadEnv::startLoading at framework/source/loadenv/loadenv.cxx:401
    > framework::LoadEnv::loadComponentFromURL at framework/source/loadenv/loadenv.cxx:172
    > framework::Desktop::loadComponentFromURL at framework/source/services/desktop.cxx:603
    > non-virtual thunk to framework::Desktop::loadComponentFromURLat framework/source/services/desktop.cxx:604
    > unotest::MacrosTest::loadFromDesktop at unotest/source/cpp/macros_test.cxx:43
    > DialogSaveTest::test at dbaccess/qa/extras/dialog-save.cxx:73
    > CppUnit::TestCaller<DialogSaveTest>::runTest at TestCaller.h:166
    > CppUnit::TestCaseMethodFunctor::operatorat TestCase.cpp:32
    > (anonymous namespace)::Prot::protect at unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx:88
    > CppUnit::ProtectorChain::ProtectFunctor::operatorat ProtectorChain.cpp:20
    > (anonymous namespace)::Prot::protect at unotest/source/cpp/unoexceptionprotector/unoexceptionprotector.cxx:64
    > CppUnit::ProtectorChain::ProtectFunctor::operatorat ProtectorChain.cpp:20
    > CppUnit::DefaultProtector::protect at DefaultProtector.cpp:15
    > CppUnit::ProtectorChain::ProtectFunctor::operatorat ProtectorChain.cpp:20
    > CppUnit::ProtectorChain::protect at ProtectorChain.cpp:77
    > CppUnit::TestResult::protect at TestResult.cpp:181
    > CppUnit::TestCase::run at TestCase.cpp:91
    > CppUnit::TestComposite::doRunChildTests at TestComposite.cpp:64
    > CppUnit::TestComposite::run at TestComposite.cpp:23
    > CppUnit::TestComposite::doRunChildTests at TestComposite.cpp:64
    > CppUnit::TestComposite::run at TestComposite.cpp:23
    > CppUnit::TestRunner::WrappingSuite::run at TestRunner.cpp:47
    > CppUnit::TestResult::runTest at TestResult.cpp:148
    > CppUnit::TestRunner::run at TestRunner.cpp:96
    > (anonymous namespace)::ProtectedFixtureFunctor::run at sal/cppunittester/cppunittester.cxx:150
    > sal_main at sal/cppunittester/cppunittester.cxx:242
    > main at sal/cppunittester/cppunittester.cxx:166
    
    Change-Id: I217499b41027449df634945c4b260aafdfc4bff4

diff --git a/svtools/source/config/miscopt.cxx b/svtools/source/config/miscopt.cxx
index 0d3ac13..7ace27c 100644
--- a/svtools/source/config/miscopt.cxx
+++ b/svtools/source/config/miscopt.cxx
@@ -743,6 +743,9 @@ sal_Int32               SvtMiscOptions::m_nRefCount = 0     ;
 //*****************************************************************************************************************
 SvtMiscOptions::SvtMiscOptions()
 {
+    // SvtMiscOptions_Impl ctor indirectly calls code that requires locked
+    // SolarMutex; lock it first:
+    SolarMutexGuard g;
     // Global access, must be guarded (multithreading!).
     MutexGuard aGuard( GetInitMutex() );
     // Increase our refcount ...


More information about the Libreoffice-commits mailing list