Hi!

This is just a FTR after the nice patch https://git.libreoffice.org/core/+/9617bc9544cd569066ff187c3672a87fe28fe17f from Jan-Marek.

With today's Version: 7.2.0.0.alpha0+ (x64)
Build ID: ed07eff77df5af3b214a3791b4455a743ca35853
CPU threads: 12; OS: Windows 10.0 Build 19042; UI render: Skia/Raster; VCL: win
Locale: ru-RU (ru_RU); UI: en-US
Calc: CL

I see this deadlock (which I also saw before that change, so it is not any kind of regression from that change).

Main thread:

win32u.dll!NtUserMsgWaitForMultipleObjectsEx() Unknown
user32.dll!RealMsgWaitForMultipleObjectsEx()    Unknown
combase.dll!CCliModalLoop::BlockFn(void * * ahEvent, unsigned long cEvents, 
unsigned long * lpdwSignaled) Line 2156     C++
combase.dll!ModalLoop(CSyncClientCall * pClientCall) Line 166   C++
combase.dll!ClassicSTAThreadDispatchCrossApartmentCall(tagRPCOLEMESSAGE * 
pMessage, OXIDEntry * pOXIDEntry, CSyncClientCall * pClientCall) Line 319     
C++
[Inline Frame] 
combase.dll!CSyncClientCall::SwitchAptAndDispatchCall(tagRPCOLEMESSAGE * 
pMessage) Line 5856     C++
combase.dll!CSyncClientCall::SendReceive2(tagRPCOLEMESSAGE * pMessage, unsigned 
long * pstatus) Line 5459       C++
[Inline Frame] 
combase.dll!SyncClientCallRetryContext::SendReceiveWithRetry(tagRPCOLEMESSAGE 
*) Line 1542       C++
[Inline Frame] 
combase.dll!CSyncClientCall::SendReceiveInRetryContext(SyncClientCallRetryContext
 *) Line 565    C++
combase.dll!ClassicSTAThreadSendReceive(CSyncClientCall * pClientCall, 
tagRPCOLEMESSAGE * pMsg, unsigned long * pulStatus) Line 547     C++
combase.dll!CSyncClientCall::SendReceive(tagRPCOLEMESSAGE * pMessage, unsigned 
long * pulStatus) Line 783       C++
combase.dll!CClientChannel::SendReceive(tagRPCOLEMESSAGE * pMessage, unsigned 
long * pulStatus) Line 655        C++
combase.dll!NdrExtpProxySendReceive(void * pThis, _MIDL_STUB_MESSAGE * 
pStubMsg) Line 2002      C++
rpcrt4.dll!NdrpClientCall3()    Unknown
rpcrt4.dll!NdrClientCall3()     Unknown
[Inline Frame] combase.dll!IEnumFORMATETC_RemoteNext_Proxy(IEnumFORMATETC *) 
Line 1254  C
combase.dll!IEnumFORMATETC_Next_Proxy(IEnumFORMATETC * This, unsigned long 
celt, tagFORMATETC * rgelt, unsigned long * pceltFetched) Line 1678  C
vclplug_winlo.dll!CDOTransferable::initFlavorList() Line 322    C++
vclplug_winlo.dll!CDOTransferable::create(const 
com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> & rxContext, 
sal::systools::COMReference<IDataObject> pIDataObject) Line 219     C++
vclplug_winlo.dll!CWinClipboard::getContents() Line 128 C++
vclplug_winlo.dll!CWinClipboard::ClipboardContentChangedHdl(Timer * __formal) 
Line 264  C++
vclplug_winlo.dll!CWinClipboard::LinkStubClipboardContentChangedHdl(void * 
instance, Timer * data) Line 244     C++
vcllo.dll!Link<Timer *,void>::Call(Timer * data) Line 111 C++
vcllo.dll!Timer::Invoke() Line 76       C++
vcllo.dll!Scheduler::ProcessTaskScheduling() Line 464   C++
vcllo.dll!Scheduler::CallbackTaskScheduling() Line 267  C++
vcllo.dll!SalTimer::CallCallback() Line 55      C++
vclplug_winlo.dll!WinSalTimer::ImplHandleElapsedTimer() Line 164        C++
vclplug_winlo.dll!ImplSalYield(bool bWait, bool bHandleAllCurrentEvents) Line 
479       C++
vclplug_winlo.dll!WinSalInstance::DoYield(bool bWait, bool 
bHandleAllCurrentEvents) Line 525    C++
vcllo.dll!ImplYield(bool i_bWait, bool i_bAllEvents) Line 444   C++
vcllo.dll!Application::Reschedule(bool i_bAllEvents) Line 458   C++
fwklo.dll!framework::StatusIndicatorFactory::impl_reschedule(bool bForce) Line 
521      C++
fwklo.dll!framework::StatusIndicatorFactory::reset(const 
com::sun::star::uno::Reference<com::sun::star::task::XStatusIndicator> & 
xChild) Line 169    C++
fwklo.dll!framework::StatusIndicator::reset() Line 80   C++
xolo.dll!ProgressBarHelper::SetValue(long nTempValue) Line 82   C++
xolo.dll!ProgressBarHelper::Increment(long nInc) Line 55        C++
xolo.dll!XMLTextImportHelper::CreateTextChildContext(SvXMLImport & rImport, long 
nElement, const 
com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> & 
xAttrList, XMLTextType eType) Line 1764   C++
swlo.dll!`anonymous namespace'::SwXMLBodyContentContext_Impl::createFastChildContext(long 
nElement, const 
com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> & 
xAttrList) Line 56   C++
xolo.dll!SvXMLImport::startFastElement(long Element, const 
com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> & 
Attribs) Line 780   C++
expwraplo.dll!`anonymous namespace'::Entity::startElement(const 
`anonymous-namespace'::Event * pEvent) Line 455 C++
expwraplo.dll!sax_fastparser::FastSaxParserImpl::consume(`anonymous-namespace'::EventList
 & rEventList) Line 996    C++
expwraplo.dll!sax_fastparser::FastSaxParserImpl::parseStream(const 
com::sun::star::xml::sax::InputSource & rStructSource) Line 846  C++
expwraplo.dll!sax_fastparser::FastSaxParser::parseStream(const 
com::sun::star::xml::sax::InputSource & aInputSource) Line 1451      C++
xolo.dll!SvXMLImport::parseStream(const com::sun::star::xml::sax::InputSource & 
aInputSource) Line 504      C++
swlo.dll!`anonymous namespace'::ReadThroughComponent(const 
com::sun::star::uno::Reference<com::sun::star::io::XInputStream> & xInputStream, const 
com::sun::star::uno::Reference<com::sun::star::lang::XComponent> & xModelComponent, const rtl::OUString & 
rStreamName, const com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> & rxContext, const char * 
pFilterName, const com::sun::star::uno::Sequence<com::sun::star::uno::Any> & rFilterArguments, const rtl::OUString 
& rName, bool bMustBeSuccessfull, bool bEncrypted) Line 180  C++
swlo.dll!`anonymous namespace'::ReadThroughComponent(const 
com::sun::star::uno::Reference<com::sun::star::embed::XStorage> & xStorage, const 
com::sun::star::uno::Reference<com::sun::star::lang::XComponent> & xModelComponent, const char * pStreamName, 
const com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> & rxContext, const char * 
pFilterName, const com::sun::star::uno::Sequence<com::sun::star::uno::Any> & rFilterArguments, const 
rtl::OUString & rName, bool bMustBeSuccessfull) Line 322     C++
swlo.dll!XMLReader::Read(SwDoc & rDoc, const rtl::OUString & rBaseURL, SwPaM & 
rPaM, const rtl::OUString & rName) Line 838      C++
swlo.dll!SwReader::Read(const Reader & rOptions) Line 191   C++
swlo.dll!SwDocShell::Load(SfxMedium & rMedium) Line 528     C++
sfxlo.dll!SfxObjectShell::LoadOwnFormat(SfxMedium & rMedium) Line 3128      C++
sfxlo.dll!SfxObjectShell::DoLoad(SfxMedium * pMed) Line 677     C++
sfxlo.dll!SfxBaseModel::load(const 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & 
seqArguments) Line 1883      C++
sfxlo.dll!`anonymous namespace'::SfxFrameLoader_Impl::load(const 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & rArgs, const 
com::sun::star::uno::Reference<com::sun::star::frame::XFrame> & _rTargetFrame) Line 681 
C++
fwklo.dll!framework::LoadEnv::impl_loadContent() Line 1163      C++
fwklo.dll!framework::LoadEnv::start() Line 394  C++
fwklo.dll!framework::LoadEnv::startLoading(const rtl::OUString & sURL, const 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & lMediaDescriptor, const 
com::sun::star::uno::Reference<com::sun::star::frame::XFrame> & xBaseFrame, const rtl::OUString 
& sTarget, long nSearchFlags, LoadEnvFeatures eFeature) Line 299 C++
fwklo.dll!framework::LoadEnv::loadComponentFromURL(const 
com::sun::star::uno::Reference<com::sun::star::frame::XComponentLoader> & xLoader, const 
com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> & xContext, const rtl::OUString 
& sURL, const rtl::OUString & sTarget, long nSearchFlags, const 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & lArgs) Line 168    C++
fwklo.dll!framework::Desktop::loadComponentFromURL(const rtl::OUString & sURL, const 
rtl::OUString & sTargetFrameName, long nSearchFlags, const 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & lArguments) Line 
593    C++
unotest.dll!unotest::MacrosTest::loadFromDesktop(const rtl::OUString & rURL, const 
rtl::OUString & rDocService, const 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & rExtraArgs) Line 
63       C++
swqahelper.dll!SwModelTestBase::loadURL(const rtl::OUString & rURL, const char 
* pName, const char * pPassword) Line 516    C++
swqahelper.dll!SwModelTestBase::load(const rtl::OUString & pDir, const char * 
pName, const char * pPassword) Line 345       C++
test_sw_uiwriter.dll!testTdf119571_keep_numbering_with_Reject::TestBody() Line 
836      C++
test_sw_uiwriter.dll!std::invoke<void (__cdecl 
testTdf119571_keep_numbering_with_Reject::*&)(void),testTdf119571_keep_numbering_with_Reject * 
&>(void(testTdf119571_keep_numbering_with_Reject::*)() & _Obj, 
testTdf119571_keep_numbering_with_Reject * & _Arg1) Line 1614        C++
test_sw_uiwriter.dll!std::_Invoker_ret<std::_Unforced,0>::_Call<void (__cdecl 
testTdf119571_keep_numbering_with_Reject::*&)(void),testTdf119571_keep_numbering_with_Reject * 
&>(void(testTdf119571_keep_numbering_with_Reject::*)() & _Func, 
testTdf119571_keep_numbering_with_Reject * & <_Vals_0>) Line 773 C++
test_sw_uiwriter.dll!std::_Call_binder<std::_Unforced,0,void (__cdecl 
testTdf119571_keep_numbering_with_Reject::*)(void),std::tuple<testTdf119571_keep_numbering_with_Reject 
*>,std::tuple<>>(std::_Invoker_ret<std::_Unforced,0> __formal, std::integer_sequence<unsigned __int64,0> 
__formal, void(testTdf119571_keep_numbering_with_Reject::*)() & _Obj, std::tuple<testTdf119571_keep_numbering_with_Reject *> 
& _Tpl, std::tuple<> && _Ut) Line 1440     C++
test_sw_uiwriter.dll!std::_Binder<std::_Unforced,void (__cdecl 
testTdf119571_keep_numbering_with_Reject::*&)(void),testTdf119571_keep_numbering_with_Reject * 
&>::operator()<>() Line 1496  C++
test_sw_uiwriter.dll!std::invoke<std::_Binder<std::_Unforced,void (__cdecl 
testTdf119571_keep_numbering_with_Reject::*&)(void),testTdf119571_keep_numbering_with_Reject * &> 
&>(std::_Binder<std::_Unforced,void (__cdecl 
testTdf119571_keep_numbering_with_Reject::*&)(void),testTdf119571_keep_numbering_with_Reject * &> & _Obj) 
Line 1585 C++
test_sw_uiwriter.dll!std::_Invoker_ret<void,1>::_Call<std::_Binder<std::_Unforced,void (__cdecl 
testTdf119571_keep_numbering_with_Reject::*&)(void),testTdf119571_keep_numbering_with_Reject * &> 
&>(std::_Binder<std::_Unforced,void (__cdecl 
testTdf119571_keep_numbering_with_Reject::*&)(void),testTdf119571_keep_numbering_with_Reject * &> & _Func) Line 
745      C++
test_sw_uiwriter.dll!std::_Func_impl_no_alloc<std::_Binder<std::_Unforced,void (__cdecl 
testTdf119571_keep_numbering_with_Reject::*&)(void),testTdf119571_keep_numbering_with_Reject * 
&>,void>::_Do_call() Line 948        C++
test_sw_uiwriter.dll!std::_Func_class<void>::operator()() Line 996        C++
test_sw_uiwriter.dll!CppUnit::TestCaller<testTdf119571_keep_numbering_with_Reject>::runTest()
 Line 176    C++
cppunitd_dll.dll!CppUnit::TestCaseMethodFunctor::operator()() Line 33   C++
vclbootstrapprotector.dll!`anonymous namespace'::Protector::protect(const 
CppUnit::Functor & functor, const CppUnit::ProtectorContext & __formal) Line 46 
      C++
cppunitd_dll.dll!CppUnit::ProtectorChain::ProtectFunctor::operator()() Line 21  
C++
unobootstrapprotector.dll!`anonymous namespace'::Prot::protect(const CppUnit::Functor 
& functor, const CppUnit::ProtectorContext & __formal) Line 79    C++
cppunitd_dll.dll!CppUnit::ProtectorChain::ProtectFunctor::operator()() Line 21  
C++
unoexceptionprotector.dll!`anonymous namespace'::Prot::protect(const CppUnit::Functor 
& functor, const CppUnit::ProtectorContext & context) Line 62     C++
cppunitd_dll.dll!CppUnit::ProtectorChain::ProtectFunctor::operator()() Line 21  
C++
cppunitd_dll.dll!CppUnit::DefaultProtector::protect(const CppUnit::Functor & 
functor, const CppUnit::ProtectorContext & context) Line 15        C++
cppunitd_dll.dll!CppUnit::ProtectorChain::ProtectFunctor::operator()() Line 21  
C++
cppunitd_dll.dll!CppUnit::ProtectorChain::protect(const CppUnit::Functor & functor, 
const CppUnit::ProtectorContext & context) Line 86  C++
cppunitd_dll.dll!CppUnit::TestResult::protect(const CppUnit::Functor & functor, 
CppUnit::Test * test, const std::string & shortDescription) Line 182    C++
cppunitd_dll.dll!CppUnit::TestCase::run(CppUnit::TestResult * result) Line 91   
C++
cppunitd_dll.dll!CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult * 
controller) Line 65      C++
cppunitd_dll.dll!CppUnit::TestComposite::run(CppUnit::TestResult * result) Line 
24      C++
cppunitd_dll.dll!CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult * 
controller) Line 65      C++
cppunitd_dll.dll!CppUnit::TestComposite::run(CppUnit::TestResult * result) Line 
24      C++
cppunitd_dll.dll!CppUnit::TestRunner::WrappingSuite::run(CppUnit::TestResult * 
result) Line 47  C++
cppunitd_dll.dll!CppUnit::TestResult::runTest(CppUnit::Test * test) Line 150    
C++
cppunitd_dll.dll!CppUnit::TestRunner::run(CppUnit::TestResult & controller, const 
std::string & testPath) Line 96       C++
cppunittester.exe!`anonymous namespace'::ProtectedFixtureFunctor::run() Line 
324        C++
cppunittester.exe!sal_main() Line 474   C++
cppunittester.exe!main(int argc, char * * argv) Line 381        C++
cppunittester.exe!invoke_main() Line 79 C++
cppunittester.exe!__scrt_common_main_seh() Line 288     C++
cppunittester.exe!__scrt_common_main() Line 331 C++
cppunittester.exe!mainCRTStartup() Line 17      C++
kernel32.dll!BaseThreadInitThunk()     Unknown
ntdll.dll!RtlUserThreadStart() Unknown

Clipboard thread:

ntdll.dll!NtWaitForAlertByThreadId()   Unknown
ntdll.dll!RtlpWaitOnAddressWithTimeout()        Unknown
ntdll.dll!RtlpWaitOnAddress()   Unknown
ntdll.dll!RtlpWaitOnCriticalSection()   Unknown
ntdll.dll!RtlpEnterCriticalSectionContended()   Unknown
ntdll.dll!RtlEnterCriticalSection()    Unknown
sal3.dll!osl_acquireMutex(_oslMutexImpl * Mutex) Line 66        C++
vclplug_winlo.dll!osl::Mutex::acquire() Line 57 C++
vclplug_winlo.dll!SalYieldMutex::doAcquire(unsigned long nLockCount) Line 163   
C++
comphelper.dll!comphelper::SolarMutex::acquire(unsigned long nLockCount) Line 
87        C++
vcllo.dll!osl::Guard<comphelper::SolarMutex>::Guard<comphelper::SolarMutex>(comphelper::SolarMutex
 & t) Line 136        C++
vcllo.dll!SolarMutexGuard::SolarMutexGuard() Line 1331  C++
vcllo.dll!TransferableHelper::lostOwnership(const 
com::sun::star::uno::Reference<com::sun::star::datatransfer::clipboard::XClipboard> & 
__formal, const com::sun::star::uno::Reference<com::sun::star::datatransfer::XTransferable> 
& __formal) Line 453    C++
vclplug_winlo.dll!CXNotifyingDataObject::lostOwnership() Line 140       C++
vclplug_winlo.dll!CWinClipboard::onReleaseDataObject(CXNotifyingDataObject * 
theCaller) Line 325        C++
vclplug_winlo.dll!CXNotifyingDataObject::Release() Line 77      C++
combase.dll!CStdIdentity::ReleaseCtrlUnk::__l5::<lambda>() Line 1413      C++
combase.dll!ObjectMethodExceptionHandlingAction<void 
<lambda>(void)>(CStdIdentity::ReleaseCtrlUnk::__l5::void <lambda>(void) action, 
ObjectMethodExceptionHandlingInfo * pExceptionHandlingInfo, ExceptionHandlingResult *) Line 128  
C++
[Inline Frame] combase.dll!CStdIdentity::ReleaseCtrlUnk(unsigned long) Line 
1384        C++
combase.dll!CStdMarshal::DisconnectWorker_ReleasesLock(unsigned long dwType, 
bool logEventIsActive, CObjectContext * explicitServerContext) Line 4731   C++
[Inline Frame] combase.dll!CStdMarshal::HandlePendingDisconnect(HRESULT) Line 
4275      C++
combase.dll!CRemoteUnknown::RemReleaseWorker(unsigned short cInterfaceRefs, 
tagREMINTERFACEREF * InterfaceRefs, int fTopLevel) Line 1307        C++
rpcrt4.dll!Invoke()    Unknown
rpcrt4.dll!Ndr64StubWorker()    Unknown
rpcrt4.dll!NdrStubCall3()       Unknown
combase.dll!CStdStubBuffer_Invoke(IRpcStubBuffer * This, tagRPCOLEMESSAGE * 
prpcmsg, IRpcChannelBuffer * pRpcChannelBuffer) Line 1458   C++
[Inline Frame] 
combase.dll!InvokeStubWithExceptionPolicyAndTracing::__l6::<lambda_c9f3956a20c9da92a64affc24fdd69ec>::operator()()
 Line 1279       C++
combase.dll!ObjectMethodExceptionHandlingAction<<lambda_c9f3956a20c9da92a64affc24fdd69ec>>(InvokeStubWithExceptionPolicyAndTracing::__l6::<lambda_c9f3956a20c9da92a64affc24fdd69ec>
 action, ObjectMethodExceptionHandlingInfo * pExceptionHandlingInfo, ExceptionHandlingResult * 
pExceptionHandlingResult, void *) Line 87   C++
[Inline Frame] 
combase.dll!InvokeStubWithExceptionPolicyAndTracing(IRpcStubBuffer * pMsg, 
tagRPCOLEMESSAGE *) Line 1277 C++
combase.dll!DefaultStubInvoke(bool bIsAsyncBeginMethod, IServerCall * 
pServerCall, IRpcChannelBuffer * pChannel, IRpcStubBuffer * pStub, unsigned 
long * pdwFault) Line 1346    C++
[Inline Frame] combase.dll!SyncStubCall::Invoke(IServerCall *) Line 1403        
C++
combase.dll!SyncServerCall::StubInvoke(IRpcChannelBuffer * pChannel, 
IRpcStubBuffer * pStub, unsigned long * pdwFault) Line 781 C++
[Inline Frame] combase.dll!StubInvoke(tagRPCOLEMESSAGE * pMsg, CStdIdentity * 
pStdID, IRpcStubBuffer *) Line 1628       C++
combase.dll!ServerCall::ContextInvoke(tagRPCOLEMESSAGE * pMessage, 
IRpcStubBuffer * pStub, CServerChannel * pChannel, tagIPIDEntry * pIPIDEntry, 
unsigned long * pdwFault) Line 1423    C++
[Inline Frame] combase.dll!CServerChannel::ContextInvoke(tagRPCOLEMESSAGE *) 
Line 1332  C++
[Inline Frame] combase.dll!DefaultInvokeInApartment(tagRPCOLEMESSAGE *) Line 
3297       C++
combase.dll!ReentrantSTAInvokeInApartment(tagRPCOLEMESSAGE * pMsg, unsigned 
long dwCallCat, bool bIsTouchedASTACall, IRpcStubBuffer * pStub, CServerChannel 
* pChnl, tagIPIDEntry * pIPIDEntry, unsigned long * pdwFault) Line 113      C++
[Inline Frame] combase.dll!AppInvoke(ServerCall * pStub, CServerChannel *) Line 
1122    C++
combase.dll!ComInvokeWithLockAndIPID(ServerCall * pServerCall, tagIPIDEntry * 
pIPIDEntry, bool * pbCallerResponsibleForRequestMessageCleanup) Line 2210 C++
[Inline Frame] combase.dll!ComInvoke(ServerCall *) Line 1697    C++
[Inline Frame] combase.dll!ThreadDispatch(ServerCall *) Line 414        C++
combase.dll!ThreadWndProc(HWND__ * window, unsigned int message, unsigned 
__int64 wparam, __int64 params) Line 740      C++
user32.dll!UserCallWinProcCheckWow()    Unknown
user32.dll!DispatchMessageWorker()      Unknown
vclplug_winlo.dll!CMtaOleClipboard::run() Line 590      C++
vclplug_winlo.dll!CMtaOleClipboard::oleThreadProc(void * pParam) Line 614       
C++
ucrtbased.dll!thread_start<unsigned int (__cdecl*)(void *),1>(void * const 
parameter) Line 97     C++
kernel32.dll!BaseThreadInitThunk()     Unknown
ntdll.dll!RtlUserThreadStart() Unknown

The deadlock is because clipboard thread tries to acquire solar mutex held by main thread (acquired in WinSalTimer::ImplHandleElapsedTimer).

At the same time, main thread calls a method of an COM/OLE object created in the clipboard thread: it gets it in CWinClipboard::getContents, and CDOTransferable::create indirectly calls its CEnumFormatEtc::Next.

Since we (correctly) initialize the clipboard thread for appartment-threaded object concurrency (see OleInitialize called in CMtaOleClipboard::run [1]), any call to methods of COM/OLE objects created in that thread are serialized to that thread. Hence the wait in the main thread (CCliModalLoop::BlockFn).

I suppose we must check to release solar mutex before any blocking calls to clipboard thread, including explicit waits (like CMtaOleClipboard::getClipboard that posts a message and then waits) and implicit waits like described above, calling COM methods of objects known to be created in a different thread.

[1] https://docs.microsoft.com/en-us/windows/win32/api/ole2/nf-ole2-oleinitialize


--
Best regards,
Mike Kaganski
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to