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


_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to