diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2013-03-22 19:13:34 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2013-03-22 19:17:20 +0100 |
commit | 9e2034c0330f969b6795dd9ec8771fdad34777a6 (patch) | |
tree | 2bfa98609b71991136a3d9e1e2e34e9518963fe6 /toolkit | |
parent | 8d68b885b021a60af0fd199a167cbaeac1f15116 (diff) |
Missing solar mutex
...as witnessed by the triggered assert
MSVCR90!wassert+0x641
vcllo!ImplDbgTestSolarMutex+0x72 [c:\lo\core\vcl\source\app\dbggui.cxx @ 1750]
tllo!DbgFunc+0x47a [c:\lo\core\tools\source\debug\debug.cxx @ 1120]
vcllo!DbgTestSolarMutex+0xd [c:\lo\core\solver\wntmsci12\inc\tools\debug.hxx @ 295]
vcllo!OutputDevice::ImplInitClipRegion+0x2d [c:\lo\core\vcl\source\gdi\outdev.cxx @ 913]
vcllo!Window::Invert+0xef [c:\lo\core\vcl\source\window\window2.cxx @ 411]
vcllo!ImplCursorInvert+0x437 [c:\lo\core\vcl\source\window\cursor.cxx @ 120]
vcllo!Cursor::ImplRestore+0x27 [c:\lo\core\vcl\source\window\cursor.cxx @ 159]
vcllo!Cursor::ImplDoHide+0x40 [c:\lo\core\vcl\source\window\cursor.cxx @ 216]
vcllo!Cursor::ImplHide+0x3c [c:\lo\core\vcl\source\window\cursor.cxx @ 234]
vcllo!Window::ImplGrabFocus+0x4aa [c:\lo\core\vcl\source\window\window.cxx @ 4053]
vcllo!Window::GrabFocus+0x52 [c:\lo\core\vcl\source\window\window.cxx @ 7544]
tklo!StdTabController::ImplActivateControl+0x1fe [c:\lo\core\toolkit\source\controls\stdtabcontroller.cxx @ 152]
tklo!StdTabController::activateFirst+0x45 [c:\lo\core\toolkit\source\controls\stdtabcontroller.cxx @ 354]
msci_uno!`anonymous namespace'::callVirtualMethod+0x8a [c:\lo\core\bridges\source\cpp_uno\msvc_win32_intel\uno2cpp.cxx @ 76]
msci_uno!`anonymous namespace'::cpp_call+0x4b3 [c:\lo\core\bridges\source\cpp_uno\msvc_win32_intel\uno2cpp.cxx @ 257]
msci_uno!bridges::cpp_uno::shared::unoInterfaceProxyDispatch+0x321 [c:\lo\core\bridges\source\cpp_uno\msvc_win32_intel\uno2cpp.cxx @ 438]
binaryurp_uno!binaryurp::IncomingRequest::execute_throw+0xaa8 [c:\lo\core\binaryurp\source\incomingrequest.cxx @ 245]
binaryurp_uno!binaryurp::IncomingRequest::execute+0xe0 [c:\lo\core\binaryurp\source\incomingrequest.cxx @ 74]
binaryurp_uno!request+0x6b [c:\lo\core\binaryurp\source\reader.cxx @ 85]
cppu3!cppu_threadpool::JobQueue::enter+0x28d [c:\lo\core\cppu\source\threadpool\jobqueue.cxx @ 115]
cppu3!cppu_threadpool::ORequestThread::run+0xc6 [c:\lo\core\cppu\source\threadpool\thread.cxx @ 175]
cppu3!threadFunc+0x18 [c:\lo\core\solver\wntmsci12\inc\osl\thread.hxx @ 187]
sal3!oslWorkerWrapperFunction+0x23 [c:\lo\core\sal\osl\w32\thread.c @ 60]
during JunitTest_toolkit_unoapi on Windows (which does not use a headless mode
for those tests).
Whether locking the class instance's GetMutex() is really necessary here I do
not know, but at least be careful to lock the global solar mutex first.
Change-Id: Icbd7936f4bf8433ef6a36912566d43361e911429
Diffstat (limited to 'toolkit')
-rw-r--r-- | toolkit/source/controls/stdtabcontroller.cxx | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/toolkit/source/controls/stdtabcontroller.cxx b/toolkit/source/controls/stdtabcontroller.cxx index f9d9ae1ff15c..08969cf70f11 100644 --- a/toolkit/source/controls/stdtabcontroller.cxx +++ b/toolkit/source/controls/stdtabcontroller.cxx @@ -28,6 +28,7 @@ #include <rtl/uuid.h> #include <tools/debug.hxx> +#include <vcl/svapp.hxx> #include <vcl/window.hxx> #include <comphelper/sequence.hxx> @@ -348,14 +349,16 @@ void StdTabController::activateTabOrder( ) throw(RuntimeException) void StdTabController::activateFirst( ) throw(RuntimeException) { - ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() ); + SolarMutexGuard aSolarGuard; + ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() ); //TODO: necessary? ImplActivateControl( sal_True ); } void StdTabController::activateLast( ) throw(RuntimeException) { - ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() ); + SolarMutexGuard aSolarGuard; + ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() ); //TODO: necessary? ImplActivateControl( sal_False ); } |