Bug 129838 - deadlock with async vs sync cppu_threadpool::JobQueue in UITest_writer_dialogs
Summary: deadlock with async vs sync cppu_threadpool::JobQueue in UITest_writer_dialogs
Status: NEW
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: sdk (show other bugs)
Version:
(earliest affected)
7.0.0.0.alpha0+
Hardware: All All
: medium normal
Assignee: Not Assigned
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: Dev-related
  Show dependency treegraph
 
Reported: 2020-01-06 17:12 UTC by Michael Stahl (allotropia)
Modified: 2021-08-13 23:17 UTC (History)
2 users (show)

See Also:
Crash report or crash signature:
Regression By:


Attachments
backtrace without linebreaks (32.17 KB, text/plain)
2020-01-06 17:16 UTC, Michael Stahl (allotropia)
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Stahl (allotropia) 2020-01-06 17:12:56 UTC
Description:

current master f1604675e71c67024887d12bf73ccb86ac05a7a3

the problem is:
* thread 6 runs async call SwXTextDocument::release() which blocks to acquire SolarMutex
* thread 1 holds SolarMutex, blocks on sync call on same aThreadId


Steps to Reproduce:
have only seen it once

Actual Results:
(gdb) thread apply all bt

Thread 8 (Thread 0x7faa995c7700 (LWP 612145)):
#0  0x00007faabb116610 in __lll_lock_wait () at /lib64/libpthread.so.0
#1  0x00007faabb10efe1 in pthread_mutex_lock () at /lib64/libpthread.so.0
#2  0x00007faabb995ba6 in osl_acquireMutex(oslMutex) (pMutex=0x8b33b0) at /work/lo/master/sal/osl/unx/mutex.cxx:100
#3  0x00007faab3a42867 in osl::Mutex::acquire() (this=0x8b85b8) at /work/lo/master/include/osl/mutex.hxx:57
#4  0x00007faab43aa1ba in SvpSalYieldMutex::doAcquire(unsigned int) (this=0x8b85b0, nLockCount=1) at /work/lo/master/vcl/headless/svpinst.cxx:360
#5  0x00007faaa90e8d6e in comphelper::SolarMutex::acquire(unsigned int) (this=0x8b85b0, nLockCount=1) at /work/lo/master/include/comphelper/solarmutex.hxx:86
#6  0x00007faaa90e91a5 in osl::Guard<comphelper::SolarMutex>::Guard(comphelper::SolarMutex&) (this=0x7faa995c5d80, t=...) at /work/lo/master/include/osl/mutex.hxx:135
#7  0x00007faaa90e8dc3 in SolarMutexGuard::SolarMutexGuard() (this=0x7faa995c5d80) at /work/lo/master/include/vcl/svapp.hxx:1359
#8  0x00007faaa9158476 in framework::OComponentAccess::createEnumeration() (this=0x5890aa0) at /work/lo/master/framework/source/helper/ocomponentaccess.cxx:55
#9  0x00007faabb67ff28 in gcc3::callVirtualMethod(void*, unsigned int, void*, _typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned int, unsigned long*, double*) (pThis=0x5890ac8, nVtableIndex=5, pRegisterReturn=0x7faa995c5f20, pReturnTypeRef=0x9f66b0, bSimpleReturn=false, pStack=0x7faa995c5f30, nStack=0, pGPR=0x7faa995c6060, pFPR=0x7faa995c6090) at /work/lo/master/bridges/source/cpp_uno/gcc3_linux_x86-64/callvirtualmethod.cxx:133
#10 0x00007faabb67eb7b in cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy*, bridges::cpp_uno::shared::VtableSlot, typelib_TypeDescriptionReference*, sal_Int32, typelib_MethodParameter*, void*, void**, uno_Any**) (pThis=0x58914b0, aVtableSlot=..., pReturnTypeRef=0x9f66b0, nParams=0, pParams=0x0, pUnoReturn=0x588dce0, pUnoArgs=0x0, ppUnoExc=0x7faa995c6200) at /work/lo/master/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:233
#11 0x00007faabb67f596 in bridges::cpp_uno::shared::unoInterfaceProxyDispatch(uno_Interface*, typelib_TypeDescription const*, void*, void**, uno_Any**) (pUnoI=0x58914b0, pMemberDescr=0x9f8190, pReturn=0x588dce0, pArgs=0x0, ppException=0x7faa995c6200) at /work/lo/master/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:413
#12 0x00007faaa9f7a3d7 in binaryurp::IncomingRequest::execute_throw(binaryurp::BinaryAny*, std::__debug::vector<binaryurp::BinaryAny, std::allocator<binaryurp::BinaryAny> >*) const (this=0x5891210, returnValue=0x7faa995c65c0, outArguments=0x7faa995c6640) at /work/lo/master/binaryurp/source/incomingrequest.cxx:236
#13 0x00007faaa9f79280 in binaryurp::IncomingRequest::execute() const (this=0x5891210) at /work/lo/master/binaryurp/source/incomingrequest.cxx:79
#14 0x00007faaa9f9de95 in binaryurp::(anonymous namespace)::request(void*) (pThreadSpecificData=0x5891210) at /work/lo/master/binaryurp/source/reader.cxx:85
#15 0x00007faaba3c22de in cppu_threadpool::JobQueue::enter(long, bool) (this=0x5891c40, nDisposeId=92869344, bReturnWhenNoJob=true) at /work/lo/master/cppu/source/threadpool/jobqueue.cxx:107
#16 0x00007faaba3c89ab in cppu_threadpool::ORequestThread::run() (this=0x58912e0) at /work/lo/master/cppu/source/threadpool/thread.cxx:165
#17 0x00007faaba3c8eda in osl::threadFunc(void*) (param=0x58912f0) at /work/lo/master/include/osl/thread.hxx:185
#18 0x00007faabb9acbfb in osl_thread_start_Impl(void*) (pData=0x20cb060) at /work/lo/master/sal/osl/unx/thread.cxx:256
#19 0x00007faabb10c4e2 in start_thread () at /lib64/libpthread.so.0
#20 0x00007faabb594693 in clone () at /lib64/libc.so.6

Thread 7 (Thread 0x7faa93c74700 (LWP 609090)):
#0  0x00007faabb112d45 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007faabb983130 in osl_waitCondition(oslCondition, TimeValue const*) (Condition=0x1a92660, pTimeout=0x0) at /work/lo/master/sal/osl/unx/conditn.cxx:231
#2  0x00007faaaff0cb1c in osl::Condition::wait(TimeValue const*) (this=0x4fe2000, pTimeout=0x0) at /work/lo/master/include/osl/conditn.hxx:119
#3  0x00007faaaff0768b in GrammarCheckingIterator::DequeueAndCheck() (this=0x4fe1e50) at /work/lo/master/linguistic/source/gciterator.cxx:701
#4  0x00007faaaff04e16 in lcl_workerfunc(void*) (gci=0x4fe1e50) at /work/lo/master/linguistic/source/gciterator.cxx:217
#5  0x00007faabb9acbfb in osl_thread_start_Impl(void*) (pData=0x551fd80) at /work/lo/master/sal/osl/unx/thread.cxx:256
#6  0x00007faabb10c4e2 in start_thread () at /lib64/libpthread.so.0
#7  0x00007faabb594693 in clone () at /lib64/libc.so.6

Thread 6 (Thread 0x7faaab0fb700 (LWP 608995)):
#0  0x00007faabb116610 in __lll_lock_wait () at /lib64/libpthread.so.0
#1  0x00007faabb10efe1 in pthread_mutex_lock () at /lib64/libpthread.so.0
#2  0x00007faabb995ba6 in osl_acquireMutex(oslMutex) (pMutex=0x8b33b0) at /work/lo/master/sal/osl/unx/mutex.cxx:100
#3  0x00007faab3a42867 in osl::Mutex::acquire() (this=0x8b85b8) at /work/lo/master/include/osl/mutex.hxx:57
#4  0x00007faab43aa1ba in SvpSalYieldMutex::doAcquire(unsigned int) (this=0x8b85b0, nLockCount=1) at /work/lo/master/vcl/headless/svpinst.cxx:360
#5  0x00007faa96194988 in comphelper::SolarMutex::acquire(unsigned int) (this=0x8b85b0, nLockCount=1) at /work/lo/master/include/comphelper/solarmutex.hxx:86
#6  0x00007faa96195ec7 in osl::Guard<comphelper::SolarMutex>::Guard(comphelper::SolarMutex&) (this=0x7faaab0f9be0, t=...) at /work/lo/master/include/osl/mutex.hxx:135
#7  0x00007faa961949dd in SolarMutexGuard::SolarMutexGuard() (this=0x7faaab0f9be0) at /work/lo/master/include/vcl/svapp.hxx:1359
#8  0x00007faa97439c4c in sw::UnoImplPtrDeleter<SwXTextDocument::Impl>::operator()(SwXTextDocument::Impl*) (this=0x57598d0, pUnoImpl=0x57e81c0) at /work/lo/master/sw/inc/unobaseclass.hxx:92
#9  0x00007faa97437572 in std::unique_ptr<SwXTextDocument::Impl, sw::UnoImplPtrDeleter<SwXTextDocument::Impl> >::~unique_ptr() (this=0x57598d0, __in_chrg=<optimized out>) at /usr/include/c++/9/bits/unique_ptr.h:284
#10 0x00007faa9741af82 in SwXTextDocument::~SwXTextDocument() (this=0x5759620, __in_chrg=<optimized out>) at /work/lo/master/sw/source/uibase/uno/unotxdoc.cxx:441
#11 0x00007faa9741b036 in SwXTextDocument::~SwXTextDocument() (this=0x5759620, __in_chrg=<optimized out>) at /work/lo/master/sw/source/uibase/uno/unotxdoc.cxx:459
#12 0x00007faaba2b0824 in cppu::OWeakObject::release() (this=0x5759760) at /work/lo/master/cppuhelper/source/weak.cxx:233
#13 0x00007faab8ecc5fe in SfxBaseModel::release() (this=0x5759760) at /work/lo/master/sfx2/source/doc/sfxbasemodel.cxx:563
#14 0x00007faa974192f8 in SwXTextDocument::release() (this=0x5759620) at /work/lo/master/sw/source/uibase/uno/unotxdoc.cxx:363
#15 0x00007faabb681ae9 in bridges::cpp_uno::shared::freeUnoInterfaceProxy(uno_ExtEnvironment*, void*) (pEnv=0x20353d0, pProxy=0x583f900) at /work/lo/master/bridges/source/cpp_uno/shared/unointerfaceproxy.cxx:41
#16 0x00007faaba40b990 in (anonymous namespace)::s_stub_defenv_revokeInterface(va_list*) (pParam=0x7faaab0f9f50) at /work/lo/master/cppu/source/uno/lbenv.cxx:367
#17 0x00007faaba406790 in s_environment_invoke_v(uno_Environment*, uno_Environment*, uno_EnvCallee*, va_list*) (pCurrEnv=0x0, pTargetEnv=0x20353d0, pCallee=0x7faaba40b5f9 <(anonymous namespace)::s_stub_defenv_revokeInterface(va_list*)>, pParam=0x7faaab0f9f50) at /work/lo/master/cppu/source/uno/EnvStack.cxx:296
#18 0x00007faaba406846 in uno_Environment_invoke_v(uno_Environment*, uno_EnvCallee*, va_list*) (pTargetEnv=0x20353d0, pCallee=0x7faaba40b5f9 <(anonymous namespace)::s_stub_defenv_revokeInterface(va_list*)>, pParam=0x7faaab0f9f50) at /work/lo/master/cppu/source/uno/EnvStack.cxx:315
#19 0x00007faaba406901 in uno_Environment_invoke(uno_Environment*, uno_EnvCallee*, ...) (pEnv=0x20353d0, pCallee=0x7faaba40b5f9 <(anonymous namespace)::s_stub_defenv_revokeInterface(va_list*)>) at /work/lo/master/cppu/source/uno/EnvStack.cxx:324
#20 0x00007faaba40bdd6 in (anonymous namespace)::defenv_revokeInterface(uno_ExtEnvironment*, void*) (pEnv=0x20353d0, pInterface=0x583f900) at /work/lo/master/cppu/source/uno/lbenv.cxx:421
#21 0x00007faabb681c11 in bridges::cpp_uno::shared::releaseProxy(uno_Interface*) (pUnoI=0x583f900) at /work/lo/master/bridges/source/cpp_uno/shared/unointerfaceproxy.cxx:78
#22 0x00007faaa9f58e23 in com::sun::star::uno::UnoInterfaceReference::~UnoInterfaceReference() (this=0x7faaab0fa0d0, __in_chrg=<optimized out>) at /work/lo/master/include/uno/dispatcher.hxx:103
#23 0x00007faaa9f53d94 in binaryurp::Bridge::releaseStub(rtl::OUString const&, com::sun::star::uno::TypeDescription const&) (this=0x20384f0, oid="5759620;gcc3[0];19db4ecca6e0446bb4b5ce947d4bf04a", type=...) at /work/lo/master/binaryurp/source/bridge.cxx:485
#24 0x00007faaa9f79b83 in binaryurp::IncomingRequest::execute_throw(binaryurp::BinaryAny*, std::__debug::vector<binaryurp::BinaryAny, std::allocator<binaryurp::BinaryAny> >*) const (this=0x58440f0, returnValue=0x7faaab0fa5c0, outArguments=0x7faaab0fa640) at /work/lo/master/binaryurp/source/incomingrequest.cxx:138
#25 0x00007faaa9f79280 in binaryurp::IncomingRequest::execute() const (this=0x58440f0) at /work/lo/master/binaryurp/source/incomingrequest.cxx:79
#26 0x00007faaa9f9de95 in binaryurp::(anonymous namespace)::request(void*) (pThreadSpecificData=0x58440f0) at /work/lo/master/binaryurp/source/reader.cxx:85
#27 0x00007faaba3c22de in cppu_threadpool::JobQueue::enter(long, bool) (this=0x58457a0, nDisposeId=34440304, bReturnWhenNoJob=true) at /work/lo/master/cppu/source/threadpool/jobqueue.cxx:107
    ^^^ m_mapQueue.find( aThreadId ).second.second
#28 0x00007faaba3c89ab in cppu_threadpool::ORequestThread::run() (this=0x20d8470) at /work/lo/master/cppu/source/threadpool/thread.cxx:165
#29 0x00007faaba3c8eda in osl::threadFunc(void*) (param=0x20d8480) at /work/lo/master/include/osl/thread.hxx:185
#30 0x00007faabb9acbfb in osl_thread_start_Impl(void*) (pData=0x50b0990) at /work/lo/master/sal/osl/unx/thread.cxx:256
#31 0x00007faabb10c4e2 in start_thread () at /lib64/libpthread.so.0
#32 0x00007faabb594693 in clone () at /lib64/libc.so.6

Thread 5 (Thread 0x7faa9a0bb700 (LWP 608791)):
#0  0x00007faabb5958ec in recv () at /lib64/libc.so.6
#1  0x00007faabb998424 in osl_receivePipe(oslPipe, void*, sal_Int32) (pPipe=0x2038460, pBuffer=0x5676138, BytesToRead=8) at /work/lo/master/sal/osl/unx/pipe.cxx:438
#2  0x00007faabb998a05 in osl_readPipe(oslPipe, void*, sal_Int32) (pPipe=0x2038460, pBuffer=0x5676138, n=8) at /work/lo/master/sal/osl/unx/pipe.cxx:508
#3  0x00007faaaa027820 in osl::StreamPipe::read(void*, int) const (this=0x115c650, pBuffer=0x5676138, n=8) at /work/lo/master/include/osl/pipe.hxx:196
#4  0x00007faaaa02656b in io_acceptor::(anonymous namespace)::PipeConnection::read(com::sun::star::uno::Sequence<signed char>&, sal_Int32) (this=0x115c620, aReadBytes=uno::Sequence of length 8 = {...}, nBytesToRead=8) at /work/lo/master/io/source/acceptor/acc_pipe.cxx:82
#5  0x00007faaa9f9dca2 in binaryurp::(anonymous namespace)::read(com::sun::star::uno::Reference<com::sun::star::connection::XConnection> const&, sal_uInt32, bool) (connection=uno::Reference to (io_acceptor::(anonymous namespace)::PipeConnection *) 0x115c648, size=8, eofOk=true) at /work/lo/master/binaryurp/source/reader.cxx:69
#6  0x00007faaa9f9e0f9 in binaryurp::Reader::execute() (this=0x20c76b0) at /work/lo/master/binaryurp/source/reader.cxx:104
#7  0x00007faab99c2592 in salhelper::Thread::run() (this=0x20c76b0) at /work/lo/master/salhelper/source/thread.cxx:40
#8  0x00007faab99c28e6 in osl::threadFunc(void*) (param=0x20c76c0) at /work/lo/master/include/osl/thread.hxx:185
#9  0x00007faabb9acbfb in osl_thread_start_Impl(void*) (pData=0x20c6de0) at /work/lo/master/sal/osl/unx/thread.cxx:256
#10 0x00007faabb10c4e2 in start_thread () at /lib64/libpthread.so.0
#11 0x00007faabb594693 in clone () at /lib64/libc.so.6

Thread 4 (Thread 0x7faa9a999700 (LWP 608789)):
#0  0x00007faabb112d45 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007faabb983130 in osl_waitCondition(oslCondition, TimeValue const*) (Condition=0x2039af0, pTimeout=0x0) at /work/lo/master/sal/osl/unx/conditn.cxx:231
#2  0x00007faaa9f59c70 in osl::Condition::wait(TimeValue const*) (this=0x20c90f0, pTimeout=0x0) at /work/lo/master/include/osl/conditn.hxx:119
#3  0x00007faaa9fa5bd4 in binaryurp::Writer::execute() (this=0x20c8f10) at /work/lo/master/binaryurp/source/writer.cxx:150
#4  0x00007faab99c2592 in salhelper::Thread::run() (this=0x20c8f10) at /work/lo/master/salhelper/source/thread.cxx:40
#5  0x00007faab99c28e6 in osl::threadFunc(void*) (param=0x20c8f20) at /work/lo/master/include/osl/thread.hxx:185
#6  0x00007faabb9acbfb in osl_thread_start_Impl(void*) (pData=0x20c74f0) at /work/lo/master/sal/osl/unx/thread.cxx:256
#7  0x00007faabb10c4e2 in start_thread () at /lib64/libpthread.so.0
#8  0x00007faabb594693 in clone () at /lib64/libc.so.6

Thread 3 (Thread 0x7faaa9f3b700 (LWP 608620)):
#0  0x00007faabb59569f in accept () at /lib64/libc.so.6
#1  0x00007faabb997fb8 in osl_acceptPipe(oslPipe) (pPipe=0x1f776d0) at /work/lo/master/sal/osl/unx/pipe.cxx:380
#2  0x00007faaaa027712 in osl::Pipe::accept(osl::StreamPipe&) (this=0x7faaa9f3a608, Connection=...) at /work/lo/master/include/osl/pipe.hxx:151
#3  0x00007faaaa026b06 in io_acceptor::PipeAcceptor::accept() (this=0x8b3a90) at /work/lo/master/io/source/acceptor/acc_pipe.cxx:156
#4  0x00007faaaa033392 in io_acceptor::(anonymous namespace)::OAcceptor::accept(rtl::OUString const&) (this=0x1b0a780, sConnectionDescription="pipe,name=pytest786c4164-3090-11ea-b572-8c89a5bfb18f") at /work/lo/master/io/source/acceptor/acceptor.cxx:207
#5  0x00007faaaa8dccf0 in desktop::Acceptor::run() (this=0x1b09670) at /work/lo/master/desktop/source/offacc/acceptor.cxx:109
#6  0x00007faaaa8dc61d in desktop::offacc_workerfunc(void*) (acc=0x1b09670) at /work/lo/master/desktop/source/offacc/acceptor.cxx:47
#7  0x00007faabb9acbfb in osl_thread_start_Impl(void*) (pData=0x1b0c6a0) at /work/lo/master/sal/osl/unx/thread.cxx:256
#8  0x00007faabb10c4e2 in start_thread () at /lib64/libpthread.so.0
#9  0x00007faabb594693 in clone () at /lib64/libc.so.6

Thread 2 (Thread 0x7faaaa89a700 (LWP 608619)):
#0  0x00007faabb59569f in accept () at /lib64/libc.so.6
#1  0x00007faabb997fb8 in osl_acceptPipe(oslPipe) (pPipe=0x1afef00) at /work/lo/master/sal/osl/unx/pipe.cxx:380
#2  0x00007faabb75b114 in osl::Pipe::accept(osl::StreamPipe&) (this=0x1afda70, Connection=...) at /work/lo/master/include/osl/pipe.hxx:151
#3  0x00007faabb759645 in desktop::PipeIpcThread::execute() (this=0x1afda40) at /work/lo/master/desktop/source/app/officeipcthread.cxx:1140
#4  0x00007faab99c2592 in salhelper::Thread::run() (this=0x1afda40) at /work/lo/master/salhelper/source/thread.cxx:40
#5  0x00007faab99c28e6 in osl::threadFunc(void*) (param=0x1afda50) at /work/lo/master/include/osl/thread.hxx:185
#6  0x00007faabb9acbfb in osl_thread_start_Impl(void*) (pData=0x1a75eb0) at /work/lo/master/sal/osl/unx/thread.cxx:256
#7  0x00007faabb10c4e2 in start_thread () at /lib64/libpthread.so.0
#8  0x00007faabb594693 in clone () at /lib64/libc.so.6

Thread 1 (Thread 0x7faaab405cc0 (LWP 608450)):
#0  0x00007faabb112d45 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007faabb983130 in osl_waitCondition(oslCondition, TimeValue const*) (Condition=0x588d0a0, pTimeout=0x0) at /work/lo/master/sal/osl/unx/conditn.cxx:231
#2  0x00007faaba3c2f28 in osl::Condition::wait(TimeValue const*) (this=0x588fe90, pTimeout=0x0) at /work/lo/master/include/osl/conditn.hxx:119
#3  0x00007faaba3c2117 in cppu_threadpool::JobQueue::enter(long, bool) (this=0x588fdb0, nDisposeId=34144576, bReturnWhenNoJob=false) at /work/lo/master/cppu/source/threadpool/jobqueue.cxx:73
    ^^^ m_mapQueue.find( aThreadId ).second.first
#4  0x00007faaba3d1491 in cppu_threadpool::ThreadPool::enter(rtl::ByteSequence const&, long) (this=0x20c9180, aThreadId=..., nDisposeId=34144576) at /work/lo/master/cppu/source/threadpool/threadpool.cxx:312
#5  0x00007faaba3d1b0c in uno_threadpool_enter(uno_ThreadPool, void**) (hPool=0x2090140, ppJob=0x7ffe7b490680) at /work/lo/master/cppu/source/threadpool/threadpool.cxx:416
#6  0x00007faaa9f54791 in binaryurp::Bridge::makeCall(rtl::OUString const&, com::sun::star::uno::TypeDescription const&, bool, std::__debug::vector<binaryurp::BinaryAny, std::allocator<binaryurp::BinaryAny> > const&, binaryurp::BinaryAny*, std::__debug::vector<binaryurp::BinaryAny, std::allocator<binaryurp::BinaryAny> >*) (this=0x20384f0, oid="21dfaf0;uno[0];8d9eb;566c3cc06d45461991d3f7f67781921", member=..., setter=false, inArguments=std::__debug::vector of length 1, capacity 1 = {...}, returnValue=0x7ffe7b490730, outArguments=0x7ffe7b4907f0) at /work/lo/master/binaryurp/source/bridge.cxx:605
#7  0x00007faaa9f9cfbe in binaryurp::Proxy::do_dispatch_throw(_typelib_TypeDescription const*, void*, void**, _uno_Any**) const (this=0x5671470, member=0x50ab0b0, returnValue=0x7ffe7b490dc0, arguments=0x7ffe7b490980, exception=0x7ffe7b490a30) at /work/lo/master/binaryurp/source/proxy.cxx:168
#8  0x00007faaa9f9ca5b in binaryurp::Proxy::do_dispatch(_typelib_TypeDescription const*, void*, void**, _uno_Any**) const (this=0x5671470, member=0x50ab0b0, returnValue=0x7ffe7b490dc0, arguments=0x7ffe7b490980, exception=0x7ffe7b490a30) at /work/lo/master/binaryurp/source/proxy.cxx:101
#9  0x00007faaa9f9c836 in binaryurp::(anonymous namespace)::proxy_dispatchInterface(uno_Interface*, typelib_TypeDescription const*, void*, void**, uno_Any**) (pUnoI=0x5671470, pMemberType=0x50ab0b0, pReturn=0x7ffe7b490dc0, pArgs=0x7ffe7b490980, ppException=0x7ffe7b490a30) at /work/lo/master/binaryurp/source/proxy.cxx:60
#10 0x00007faabb66fa6c in cpp2uno_call(bridges::cpp_uno::shared::CppInterfaceProxy*, typelib_TypeDescription const*, typelib_TypeDescriptionReference*, sal_Int32, typelib_MethodParameter*, void**, void**, void**, sal_uInt64*) (pThis=0x1f37020, pMemberTypeDescr=0x50ab0b0, pReturnTypeRef=0x8bdc50, nParams=1, pParams=0x50a3120, gpreg=0x7ffe7b490df0, fpreg=0x7ffe7b490e10, ovrflw=0x7ffe7b490e60, pRegisterReturn=0x7ffe7b490dc0) at /work/lo/master/bridges/source/cpp_uno/gcc3_linux_x86-64/cpp2uno.cxx:185
#11 0x00007faabb6704f5 in cpp_vtable_call(sal_Int32, sal_Int32, void**, void**, void**, sal_uInt64*) (nFunctionIndex=4, nVtableOffset=0, gpreg=0x7ffe7b490de0, fpreg=0x7ffe7b490e10, ovrflw=0x7ffe7b490e60, pRegisterReturn=0x7ffe7b490dc0) at /work/lo/master/bridges/source/cpp_uno/gcc3_linux_x86-64/cpp2uno.cxx:373
#12 0x00007faabb68c6fc in privateSnippetExecutor () at /work/lo/master/instdir/program/libgcc3_uno.so
#13 0x00007faab8f3efe5 in comphelper::OInterfaceContainerHelper2::NotifySingleListener<com::sun::star::document::XDocumentEventListener, com::sun::star::document::DocumentEvent>::operator()(com::sun::star::uno::Reference<com::sun::star::document::XDocumentEventListener> const&) const (this=0x7ffe7b490f10, listener=uno::Reference to (com::sun::star::uno::XInterface *) 0x1f37048) at /work/lo/master/include/comphelper/interfacecontainer2.hxx:253
#14 0x00007faab8f3e18b in comphelper::OInterfaceContainerHelper2::forEach<com::sun::star::document::XDocumentEventListener, comphelper::OInterfaceContainerHelper2::NotifySingleListener<com::sun::star::document::XDocumentEventListener, com::sun::star::document::DocumentEvent> >(comphelper::OInterfaceContainerHelper2::NotifySingleListener<com::sun::star::document::XDocumentEventListener, com::sun::star::document::DocumentEvent> const&) (this=0x1b8bc10, func=...) at /work/lo/master/include/comphelper/interfacecontainer2.hxx:266
#15 0x00007faab8f3d53b in comphelper::OInterfaceContainerHelper2::notifyEach<com::sun::star::document::XDocumentEventListener, com::sun::star::document::DocumentEvent>(void (com::sun::star::document::XDocumentEventListener::*)(com::sun::star::document::DocumentEvent const&), com::sun::star::document::DocumentEvent const&) (this=0x1b8bc10, NotificationMethod=&virtual com::sun::star::document::XDocumentEventListener::documentEventOccured(com::sun::star::document::DocumentEvent const&), Event=...) at /work/lo/master/include/comphelper/interfacecontainer2.hxx:279
#16 0x00007faab8f3b49a in (anonymous namespace)::SfxGlobalEvents_Impl::implts_notifyListener(com::sun::star::document::DocumentEvent const&) (this=0x1b8bb80, aEvent=...) at /work/lo/master/sfx2/source/notify/globalevents.cxx:389
#17 0x00007faab8f3a286 in (anonymous namespace)::SfxGlobalEvents_Impl::documentEventOccured(com::sun::star::document::DocumentEvent const&) (this=0x1b8bb80, Event=...) at /work/lo/master/sfx2/source/notify/globalevents.cxx:208
#18 0x00007faab8ee4c2b in (anonymous namespace)::NotifySingleListenerIgnoreRE<com::sun::star::document::XDocumentEventListener, com::sun::star::document::DocumentEvent>::operator()(com::sun::star::uno::Reference<com::sun::star::document::XDocumentEventListener> const&) const (this=0x7ffe7b4910f0, listener=uno::Reference to ((anonymous namespace)::SfxGlobalEvents_Impl *) 0x1b8bbd0) at /work/lo/master/sfx2/source/doc/sfxbasemodel.cxx:3193
#19 0x00007faab8ee42a3 in cppu::OInterfaceContainerHelper::forEach<com::sun::star::document::XDocumentEventListener, (anonymous namespace)::NotifySingleListenerIgnoreRE<com::sun::star::document::XDocumentEventListener, com::sun::star::document::DocumentEvent> >((anonymous namespace)::NotifySingleListenerIgnoreRE<com::sun::star::document::XDocumentEventListener, com::sun::star::document::DocumentEvent> const&) (this=0x588c9f0, func=...) at /work/lo/master/include/cppuhelper/interfacecontainer.h:288
#20 0x00007faab8edb7af in SfxBaseModel::postEvent_Impl(rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::frame::XController2> const&) (this=0x57e6e50, aName="OnCreate", xController=empty uno::Reference) at /work/lo/master/sfx2/source/doc/sfxbasemodel.cxx:3227
#21 0x00007faab8ed9249 in SfxBaseModel::Notify(SfxBroadcaster&, SfxHint const&) (this=0x57e6e50, rBC=..., rHint=...) at /work/lo/master/sfx2/source/doc/sfxbasemodel.cxx:2876
#22 0x00007faab8591057 in SfxBroadcaster::Broadcast(SfxHint const&) (this=0x58b89b0, rHint=...) at /work/lo/master/svl/source/notify/SfxBroadcaster.cxx:49
#23 0x00007faab8a81862 in SfxApplication::NotifyEvent(SfxEventHint const&, bool) (this=0x1b8bfb0, rEventHint=..., bSynchron=true) at /work/lo/master/sfx2/source/appl/appcfg.cxx:814
#24 0x00007faab8ea6937 in SfxObjectShell::SetInitialized_Impl(bool) (this=0x58b89b0, i_fromInitNew=true) at /work/lo/master/sfx2/source/doc/objxtor.cxx:1090
#25 0x00007faab8e8e3ab in SfxObjectShell::DoInitNew(SfxMedium*) (this=0x58b89b0, pMed=0x0) at /work/lo/master/sfx2/source/doc/objstor.cxx:503
#26 0x00007faa969aa08e in SwXMLTextBlocks::SwXMLTextBlocks(rtl::OUString const&) (this=0x56983d0, rFile="file:///work/lo/master/workdir/UITest/writer_dialogs/user/user/autotext/mytexts.bau") at /work/lo/master/sw/source/core/swg/SwXMLTextBlocks.cxx:66
#27 0x00007faa969ba99c in SwTextBlocks::SwTextBlocks(rtl::OUString const&) (this=0x57ddda0, rFile="file:///work/lo/master/workdir/UITest/writer_dialogs/user/user/autotext/mytexts.bau") at /work/lo/master/sw/source/core/swg/swblocks.cxx:230
#28 0x00007faa9726b7bc in SwGlossaries::GetGlosDoc(rtl::OUString const&, bool) const (this=0x1f38e20, rName="mytexts*1", bCreate=false) at /work/lo/master/sw/source/uibase/misc/glosdoc.cxx:286
#29 0x00007faa9726ab74 in SwGlossaries::GetGroupDoc(rtl::OUString const&, bool) (this=0x1f38e20, rName="mytexts*1", bCreate=false) at /work/lo/master/sw/source/uibase/misc/glosdoc.cxx:171
#30 0x00007faa97176ca1 in SwGlossaryHdl::IsReadOnly(rtl::OUString const*) const (this=0x5686360, pGrpNm=0x7ffe7b491958) at /work/lo/master/sw/source/uibase/dochdl/gloshdl.cxx:642
#31 0x00007faa9315c358 in SwGlossaryDlg::Init() (this=0x565bb00) at /work/lo/master/sw/source/ui/misc/glossary.cxx:734
#32 0x00007faa93157587 in SwGlossaryDlg::SwGlossaryDlg(SfxViewFrame const*, SwGlossaryHdl*, SwWrtShell*) (this=0x565bb00, pViewFrame=0x50abc80, pGlosHdl=0x5686360, pWrtShell=0x50dd7e0) at /work/lo/master/sw/source/ui/misc/glossary.cxx:250
#33 0x00007faa92fdc480 in std::make_unique<SwGlossaryDlg, SfxViewFrame*&, SwGlossaryHdl*&, SwWrtShell*&>(SfxViewFrame*&, SwGlossaryHdl*&, SwWrtShell*&) (__args#0=@0x7ffe7b491d48: 0x50abc80, __args#1=@0x7ffe7b491d40: 0x5686360, __args#2=@0x7ffe7b491d38: 0x50dd7e0) at /usr/include/c++/9/bits/unique_ptr.h:849
#34 0x00007faa92fcd460 in SwAbstractDialogFactory_Impl::CreateGlossaryDlg(SfxViewFrame*, SwGlossaryHdl*, SwWrtShell*) (this=0x7faa934701c8 <swui::GetFactory()::aFactory>, pViewFrame=0x50abc80, pGlosHdl=0x5686360, pWrtShell=0x50dd7e0) at /work/lo/master/sw/source/ui/dialog/swdlgfact.cxx:1019
#35 0x00007faa97173b28 in SwGlossaryHdl::GlossaryDlg() (this=0x5686360) at /work/lo/master/sw/source/uibase/dochdl/gloshdl.cxx:83
#36 0x00007faa973178e2 in SwTextShell::ExecGlossary(SfxRequest&) (this=0x52fb360, rReq=...) at /work/lo/master/sw/source/uibase/shells/textglos.cxx:50
#37 0x00007faa97319af0 in SfxStubSwTextShellExecGlossary(SfxShell*, SfxRequest&) (pShell=0x52fb360, rReq=...) at /work/lo/master/workdir/SdiTarget/sw/sdi/swslots.hxx:3049
#38 0x00007faab8bc8e40 in SfxShell::CallExec(void (*)(SfxShell*, SfxRequest&), SfxRequest&) (this=0x52fb360, pFunc=0x7faa97319ac2 <SfxStubSwTextShellExecGlossary(SfxShell*, SfxRequest&)>, rReq=...) at /work/lo/master/include/sfx2/shell.hxx:197
#39 0x00007faab8bb4e50 in SfxDispatcher::Call_Impl(SfxShell&, SfxSlot const&, SfxRequest&, bool) (this=0x50cea30, rShell=..., rSlot=..., rReq=..., bRecord=true) at /work/lo/master/sfx2/source/control/dispatch.cxx:254
#40 0x00007faab8bb8958 in SfxDispatcher::PostMsgHandler(std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >) (this=0x50cea30, pReq=std::unique_ptr<SfxRequest> = {...}) at /work/lo/master/sfx2/source/control/dispatch.cxx:991
#41 0x00007faab8bdfe54 in std::__invoke_impl<void, void (SfxDispatcher::*&)(std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >), SfxDispatcher*&, std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> > >(std::__invoke_memfun_deref, void (SfxDispatcher::*&)(std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >), SfxDispatcher*&, std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >&&) (__f=@0x1a8a9f0: (void (SfxDispatcher::*)(SfxDispatcher * const, std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >)) 0x7faab8bb87da <SfxDispatcher::PostMsgHandler(std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >)>, __t=@0x1a8aa00: 0x50cea30, __args#0=...) at /usr/include/c++/9/bits/invoke.h:73
#42 0x00007faab8bdce17 in std::__invoke<void (SfxDispatcher::*&)(std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >), SfxDispatcher*&, std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> > >(void (SfxDispatcher::*&)(std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >), SfxDispatcher*&, std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >&&) (__fn=@0x1a8a9f0: (void (SfxDispatcher::*)(SfxDispatcher * const, std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >)) 0x7faab8bb87da <SfxDispatcher::PostMsgHandler(std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >)>, __args#0=@0x1a8aa00: 0x50cea30, __args#1=...) at /usr/include/c++/9/bits/invoke.h:95
#43 0x00007faab8bd7f04 in std::_Bind<void (SfxDispatcher::*(SfxDispatcher*, std::_Placeholder<1>))(std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >)>::__call<void, std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >&&, 0ul, 1ul>(std::tuple<std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >&&>&&, std::_Index_tuple<0ul, 1ul>) (this=0x1a8a9f0, __args=...) at /usr/include/c++/9/functional:400
#44 0x00007faab8bd1d24 in std::_Bind<void (SfxDispatcher::*(SfxDispatcher*, std::_Placeholder<1>))(std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >)>::operator()<std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >, void>(std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >&&) (this=0x1a8a9f0, __args#0=...) at /usr/include/c++/9/functional:484
#45 0x00007faab8bcdabc in std::_Function_handler<void (std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >), std::_Bind<void (SfxDispatcher::*(SfxDispatcher*, std::_Placeholder<1>))(std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >)> >::_M_invoke(std::_Any_data const&, std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >&&) (__functor=..., __args#0=...) at /usr/include/c++/9/bits/std_function.h:300
#46 0x00007faab8f41227 in std::function<void (std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >)>::operator()(std::unique_ptr<SfxRequest, std::default_delete<SfxRequest> >) const (this=0x50d6350, __args#0=std::unique_ptr<SfxRequest> = {...}) at /usr/include/c++/9/bits/std_function.h:690
#47 0x00007faab8f410a8 in SfxHintPoster::DoEvent_Impl(void*) (this=0x50d6340, pPostedHint=0x20d1560) at /work/lo/master/sfx2/source/notify/hintpost.cxx:47
#48 0x00007faab8f41047 in SfxHintPoster::LinkStubDoEvent_Impl(void*, void*) (instance=0x50d6340, data=0x20d1560) at /work/lo/master/sfx2/source/notify/hintpost.cxx:44
#49 0x00007faab3bb47e5 in Link<void*, void>::Call(void*) const (this=0x1f3b938, data=0x20d1560) at /work/lo/master/include/tools/link.hxx:111
#50 0x00007faab3bb1c55 in ImplHandleUserEvent(ImplSVEvent*) (pSVEvent=0x1f3b930) at /work/lo/master/vcl/source/window/winproc.cxx:2006
#51 0x00007faab3bb393c in ImplWindowFrameProc(vcl::Window*, SalEvent, void const*) (_pWindow=0x1b98220, nEvent=SalEvent::UserEvent, pEvent=0x1f3b930) at /work/lo/master/vcl/source/window/winproc.cxx:2559
#52 0x00007faab439280c in SalFrame::CallCallback(SalEvent, void const*) const (this=0x1b94d40, nEvent=SalEvent::UserEvent, pEvent=0x1f3b930) at /work/lo/master/vcl/inc/salframe.hxx:299
#53 0x00007faab43a9ddf in SvpSalInstance::ProcessEvent(SalUserEventList::SalUserEvent) (this=0x8b86f0, aEvent=...) at /work/lo/master/vcl/headless/svpinst.cxx:293
#54 0x00007faab415362d in SalUserEventList::DispatchUserEvents(bool) (this=0x8b8710, bHandleAllCurrentEvents=false) at /work/lo/master/vcl/source/app/salusereventlist.cxx:108
#55 0x00007faab43aa50f in SvpSalInstance::DoYield(bool, bool) (this=0x8b86f0, bWait=true, bHandleAllCurrentEvents=false) at /work/lo/master/vcl/headless/svpinst.cxx:438
#56 0x00007faab41e0a45 in ImplYield(bool, bool) (i_bWait=true, i_bAllEvents=false) at /work/lo/master/vcl/source/app/svapp.cxx:446
#57 0x00007faab41e0f63 in Application::Yield() () at /work/lo/master/vcl/source/app/svapp.cxx:510
#58 0x00007faab41e0842 in Application::Execute() () at /work/lo/master/vcl/source/app/svapp.cxx:427
#59 0x00007faabb7079b9 in desktop::Desktop::Main() (this=0x7ffe7b492fe0) at /work/lo/master/desktop/source/app/app.cxx:1609
#60 0x00007faab41fbfe8 in ImplSVMain() () at /work/lo/master/vcl/source/app/svmain.cxx:191
#61 0x00007faab41fc10d in SVMain() () at /work/lo/master/vcl/source/app/svmain.cxx:225
#62 0x00007faabb762441 in soffice_main() () at /work/lo/master/desktop/source/app/sofficemain.cxx:171
#63 0x000000000040087e in sal_main () at /work/lo/master/desktop/source/app/main.c:48
#64 0x0000000000400864 in main (argc=7, argv=0x7ffe7b4933a8) at /work/lo/master/desktop/source/app/main.c:47
(gdb) thread
[Current thread is 1 (Thread 0x7faaab405cc0 (LWP 608450))]
(gdb) frame 3
#3  0x00007faaba3c2117 in cppu_threadpool::JobQueue::enter (this=0x588fdb0, nDisposeId=34144576, bReturnWhenNoJob=false) at /work/lo/master/cppu/source/threadpool/jobqueue.cxx:73
73	            m_cndWait.wait();
(gdb) p *this
$1 = {
  m_mutex = {
    mutex = 0x588fc10
  },
  m_lstJob = std::__debug::deque with 1 element = {{
      pThreadSpecificData = 0x588d8f0,
      doRequest = 0x0
    }},
  m_lstCallstack = std::__debug::deque with 1 element = {34144576},
  m_nToDo = 1,
  m_bSuspended = true,
  m_cndWait = {
    condition = 0x588d0a0
  },
  m_DisposedCallerAdmin = std::shared_ptr<cppu_threadpool::DisposedCallerAdmin> (use count 6, weak count 0) = {
    get() = 0x20341e0
  }
}
(gdb) up
#4  0x00007faaba3d1491 in cppu_threadpool::ThreadPool::enter (this=0x20c9180, aThreadId=..., nDisposeId=34144576) at /work/lo/master/cppu/source/threadpool/threadpool.cxx:312
312	        void *pReturn = pQueue->enter( nDisposeId );
(gdb) p *this
$2 = cppu_threadpool::ThreadPool@0x20c9180
(gdb) p m_mapQueue.find( aThreadId )
$3 = {
  <std::__detail::_Node_iterator_base<std::pair<rtl::ByteSequence const, std::pair<cppu_threadpool::JobQueue*, cppu_threadpool::JobQueue*> >, true>> = {
    _M_cur = 0x5842220
  }, <No data fields>}
(gdb) p *m_mapQueue.find( aThreadId )
$4 = {
  first = {
    _pSequence = 0x50a93a0
  },
  second = {
    first = 0x588fdb0,
    second = 0x58457a0
  }
}


Expected Results:
no deadlock


Reproducible: Didn't try


User Profile Reset: No



Additional Info:
Comment 1 Michael Stahl (allotropia) 2020-01-06 17:16:03 UTC
Created attachment 156969 [details]
backtrace without linebreaks
Comment 2 Stephan Bergmann 2020-01-07 12:49:38 UTC
The problem is that thread 1 frame 13 makes a call on a UNO object while it allegedly holds the SolarMutex.

The remote side servicing that call apparently sends back an async release call.  However, async calls are executed on fresh threads (thread 6 here), see <https://wiki.openoffice.org/wiki/Uno/Remote/Specifications/Uno_Remote_Protocol#Threads>:  "Whenever an asynchronous request message becomes the first entry in a queue for a given TID (of some UNO thread h), the receiving side starts to sequentially execute the computation steps corresponding to the requested UNO interface method, in a new (previously immaterial) thread h′. It uses the TID of thread h′ for all request messages sent while executing these computation steps. When it is finished with the computation steps, thread h′ transitions from active to done, and the asynchronous request message is removed from the head of the queue."