Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


is there any authoritative documentation on when exactly the SolarMutex should be locked when coming from the UI?

i know that it must be locked on UNO API method entry in the parts of the code that are not otherwise threadsafe, but i have no idea how the UI stuff / VCL works.

for example, somebody has put a DBG_TESTSOLARMUTEX() assertion in ImplWindowFrameProc, which can easily be triggered by just creating a new Writer document, entering a letter or whatever and hitting the 'Save' icon.

now which frame in that stack should lock the SolarMutex ?

#0  0x00007ffff7d6fdb1 in osl_assertFailedLine () from 
/data/lo/core/solver/unxlngx6/installation/opt/program/../basis-link/ure-link/lib/libuno_sal.so.3
#1  0x00007ffff32cfacd in ImplDbgTestSolarMutex () at /data/lo/core/vcl/source/app/dbggui.cxx:1978
#2  0x00007ffff4457265 in DbgFunc (nAction=15, pParam=0x0) at 
/data/lo/core/tools/source/debug/debug.cxx:1301
#3  0x00007ffff34be129 in DbgTestSolarMutex () at 
/data/lo/core/solver/unxlngx6/inc/tools/debug.hxx:322
#4  0x00007ffff3782fe0 in ImplWindowFrameProc (pWindow=0x134b490, nEvent=2, pEvent=0x7fffffff6fd0) 
at /data/lo/core/vcl/source/window/winproc.cxx:2370
#5  0x00007fffe56641d7 in SalFrame::CallCallback (this=0x134b910, nEvent=2, pEvent=0x7fffffff6fd0) 
at /data/lo/core/vcl/inc/salframe.hxx:294
#6  0x00007fffe568e55e in GtkSalFrame::signalCrossing (pEvent=0x1e3c8e0, frame=0x134b910) at 
/data/lo/core/vcl/unx/gtk/window/gtkframe.cxx:2866
#7  0x000000337114ef33 in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#8  0x0000003363c0ea24 in g_closure_invoke () from /lib64/libgobject-2.0.so.0
#9  0x0000003363c20d17 in ?? () from /lib64/libgobject-2.0.so.0
#10 0x0000003363c29f13 in g_signal_emit_valist () from /lib64/libgobject-2.0.so.0
#11 0x0000003363c2a2e2 in g_signal_emit () from /lib64/libgobject-2.0.so.0
#12 0x0000003371284141 in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#13 0x00000033712842fc in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#14 0x000000337128858a in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#15 0x000000337114b1c5 in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#16 0x000000337114b2db in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#17 0x00000033712974a0 in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#18 0x0000003363c0ea24 in g_closure_invoke () from /lib64/libgobject-2.0.so.0
#19 0x0000003363c20527 in ?? () from /lib64/libgobject-2.0.so.0
#20 0x0000003363c2a141 in g_signal_emit_valist () from /lib64/libgobject-2.0.so.0
#21 0x0000003363c2a2e2 in g_signal_emit () from /lib64/libgobject-2.0.so.0
#22 0x000000337128cc86 in gtk_widget_show () from /usr/lib64/libgtk-x11-2.0.so.0
#23 0x00000033710c4f13 in gtk_dialog_run () from /usr/lib64/libgtk-x11-2.0.so.0
#24 0x00007fffdda123c2 in RunDialog::run() () from 
/data/lo/core/solver/unxlngx6/installation/opt/program/../program/fps_gnome.uno.so
#25 0x00007fffdda192b8 in SalGtkFilePicker::execute() () from 
/data/lo/core/solver/unxlngx6/installation/opt/program/../program/fps_gnome.uno.so
#26 0x00007ffff60f71fa in sfx2::FileDialogHelper_Impl::implDoExecute (this=0x1d986e0) at 
/data/lo/core/sfx2/source/dialog/filedlghelper.cxx:1306
#27 0x00007ffff60f7f39 in sfx2::FileDialogHelper_Impl::execute (this=0x1d986e0, rpURLList=@0x7fffffff7fc0, 
rpSet=@0x7fffffff8268, rFilter="") at /data/lo/core/sfx2/source/dialog/filedlghelper.cxx:1481
#28 0x00007ffff60fd16f in sfx2::FileDialogHelper::Execute (this=0x1d8c2b0, rpSet=@0x7fffffff8268, 
rFilter="") at /data/lo/core/sfx2/source/dialog/filedlghelper.cxx:2374
#29 0x00007ffff62214dc in ModelData_Impl::OutputFileDialog (this=0x7fffffff8880, nStoreMode=32 ' ', 
aPreselectedFilterPropsHM=..., bSetStandardName=0 '\000', aSuggestedName=..., bPreselectPassword=0 
'\000', aSuggestedDir=..., nDialog=0, rStandardDir=..., rBlackList=...) at 
/data/lo/core/sfx2/source/doc/guisaveas.cxx:997
#30 0x00007ffff6225600 in SfxStoringHelper::GUIStoreModel (this=0x7fffffff9700, xModel=..., 
aSlotName=..., aArgsSequence=..., bPreselectPassword=0 '\000', aSuggestedName=..., 
nDocumentSignatureState=0) at /data/lo/core/sfx2/source/doc/guisaveas.cxx:1506
#31 0x00007ffff6242d53 in SfxObjectShell::ExecFile_Impl (this=0x158c330, rReq=...) at 
/data/lo/core/sfx2/source/doc/objserv.cxx:631
#32 0x00007ffff6240d73 in SfxStubSfxObjectShellExecFile_Impl (pShell=0x158c330, rReq=...) at 
/data/lo/core/workdir/unxlngx6/SdiTarget/sfx2/sdi/sfxslots.hxx:151
#33 0x00007ffff60acd04 in SfxShell::CallExec (this=0x158c330, pFunc=0x7ffff6240d50 
<SfxStubSfxObjectShellExecFile_Impl(SfxShell*, SfxRequest&)>, rReq=...) at 
/data/lo/core/sfx2/inc/sfx2/shell.hxx:202
#34 0x00007ffff60a57fd in SfxDispatcher::Call_Impl (this=0x18e4670, rShell=..., rSlot=..., 
rReq=..., bRecord=1 '\001') at /data/lo/core/sfx2/source/control/dispatch.cxx:278
#35 0x00007ffff60a8d15 in SfxDispatcher::PostMsgHandler (this=0x18e4670, pReq=0x1d8cbb0) at 
/data/lo/core/sfx2/source/control/dispatch.cxx:1373
#36 0x00007ffff60a8bc3 in SfxDispatcher::LinkStubPostMsgHandler (pThis=0x18e4670, 
pCaller=0x1d8cbb0) at /data/lo/core/sfx2/source/control/dispatch.cxx:1343
#37 0x00007ffff5ff87d6 in Link::Call (this=0x18e35e8, pCaller=0x1d8cbb0) at 
/data/lo/core/solver/unxlngx6/inc/tools/link.hxx:140
#38 0x00007ffff62c4689 in GenLink::Call (this=0x18e35e8, pCaller=0x1d8cbb0) at 
/data/lo/core/sfx2/inc/sfx2/genlink.hxx:54
#39 0x00007ffff62c457d in SfxHintPoster::Event (this=0x18e35d0, pPostedHint=0x1d8cbb0) at 
/data/lo/core/sfx2/source/notify/hintpost.cxx:88
#40 0x00007ffff62c46c4 in SfxHintPoster::DoEvent_Impl (this=0x18e35d0, pPostedHint=0x1d8cbb0) at 
/data/lo/core/sfx2/source/notify/hintpost.cxx:78
#41 0x00007ffff62c4553 in SfxHintPoster::LinkStubDoEvent_Impl (pThis=0x18e35d0, pCaller=0x1d8cbb0) 
at /data/lo/core/sfx2/source/notify/hintpost.cxx:82
#42 0x00007ffff32d8ffc in Link::Call (this=0x14b97e0, pCaller=0x1d8cbb0) at 
/data/lo/core/solver/unxlngx6/inc/tools/link.hxx:140
#43 0x00007ffff3782491 in ImplHandleUserEvent (pSVEvent=0x1d72780) at 
/data/lo/core/vcl/source/window/winproc.cxx:2001
#44 0x00007ffff3783746 in ImplWindowFrameProc (pWindow=0x1273890, nEvent=22, pEvent=0x1d72780) at 
/data/lo/core/vcl/source/window/winproc.cxx:2573
#45 0x00007fffe506d209 in SalFrame::CallCallback (this=0x1273d10, nEvent=22, pEvent=0x1d72780) at 
/data/lo/core/vcl/inc/salframe.hxx:294
#46 0x00007fffe5083249 in SalDisplay::DispatchInternalEvent (this=0x779ce0) at 
/data/lo/core/vcl/unx/generic/app/saldisp.cxx:2160
#47 0x00007fffe566387a in GtkXLib::userEventFn (data=0x6fcc80) at 
/data/lo/core/vcl/unx/gtk/app/gtkdata.cxx:900
#48 0x00007fffe5663737 in call_userEventFn (data=0x6fcc80) at 
/data/lo/core/vcl/unx/gtk/app/gtkdata.cxx:865
#49 0x0000003360c44add in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#50 0x0000003360c452d8 in ?? () from /lib64/libglib-2.0.so.0
#51 0x0000003360c454ac in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#52 0x00007fffe5663a26 in GtkXLib::Yield (this=0x6fcc80, bWait=true, bHandleAllCurrentEvents=false) 
at /data/lo/core/vcl/unx/gtk/app/gtkdata.cxx:953
#53 0x00007fffe5090c5f in X11SalInstance::Yield (this=0x6fb650, bWait=true, 
bHandleAllCurrentEvents=false) at /data/lo/core/vcl/unx/generic/app/salinst.cxx:280
#54 0x00007ffff32f1325 in ImplYield (i_bWait=true, i_bAllEvents=false) at 
/data/lo/core/vcl/source/app/svapp.cxx:459
#55 0x00007ffff32ed8fb in Application::Yield (i_bAllEvents=false) at 
/data/lo/core/vcl/source/app/svapp.cxx:493
#56 0x00007ffff32ed897 in Application::Execute () at /data/lo/core/vcl/source/app/svapp.cxx:436
#57 0x00007ffff7ab9697 in desktop::Desktop::Main (this=0x7fffffffac40) at 
/data/lo/core/desktop/source/app/app.cxx:1916
#58 0x00007ffff32f8a81 in ImplSVMain () at /data/lo/core/vcl/source/app/svmain.cxx:181
#59 0x00007ffff32f8bc7 in SVMain () at /data/lo/core/vcl/source/app/svmain.cxx:218
#60 0x00007ffff7aefdb6 in soffice_main () at /data/lo/core/desktop/source/app/sofficemain.cxx:69
#61 0x0000000000400744 in sal_main () at /data/lo/core/desktop/source/app/main.c:34
#62 0x0000000000400729 in main (argc=5, argv=0x7fffffffadf8) at 
/data/lo/core/desktop/source/app/main.c:33



Context


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.