https://bugs.freedesktop.org/show_bug.cgi?id=46678

             Bug #: 46678
           Summary: deadlock involving cppu JobQueues and/or SolarMutex
    Classification: Unclassified
           Product: LibreOffice
           Version: LibO Master
          Platform: x86-64 (AMD64)
        OS/Version: Linux (All)
            Status: NEW
          Severity: normal
          Priority: medium
         Component: Libreoffice
        AssignedTo: libreoffice-bugs@lists.freedesktop.org
        ReportedBy: mst...@redhat.com
                CC: sberg...@redhat.com


running soffice --valgrind and connecting remotely via pyuno, i get this
deadlock.

thread 1 has the SolarMutex and calls listeners, but i think
the SolarMutex probably can't be dropped here.

weird things are going on with JobQueues that i don't understand;
the instances on the stack in thread 1 and 7 look totally unrelated.

what exactly is thread 1 waiting for?


Thread 7 (Thread 16998):
#0  __lll_lock_wait () at
../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
#1  0x0000003c26609fb2 in _L_lock_910 () from /lib64/libpthread.so.0
#2  0x0000003c26609e4b in __pthread_mutex_lock (mutex=0x16d6c250) at
pthread_mutex_lock.c:86
#3  0x0000000004c2460c in osl_acquireMutex (Mutex=0x16d6c250) at
sal/osl/unx/mutex.c:130
#4  0x0000000009035e20 in vcl::SolarMutexObject::acquire (this=0x16d6c1f0) at
vcl/source/app/solarmutex.cxx:44
#5  0x00000000094e63fc in SalYieldMutex::acquire (this=0x16d6c1f0) at
vcl/generic/app/geninst.cxx:59
#6  0x00000000064c68e2 in SolarMutexGuard::SolarMutexGuard (this=0x1fe7ef10) at
solver/unxlngx6/inc/vcl/svapp.hxx:433
#7  0x000000000678c5fd in SfxBaseModel::getSomething (this=0x1976c860,
aIdentifier=uno::Sequence of length 16 = {...}) at
sfx2/source/doc/sfxbasemodel.cxx:3109
#8  0x0000000022910414 in SwXTextDocument::getSomething (this=0x1976c730,
rId=uno::Sequence of length 16 = {...}) at sw/source/ui/uno/unotxdoc.cxx:261
#9  0x00000000157dc7f5 in callVirtualMethod(void*, unsigned int, void*,
_typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned int,
unsigned long*, unsigned int, double*, unsigned int) () from
solver/unxlngx6/installation/opt/ure/lib/libgcc3_uno.so
#10 0x00000000157dd335 in
cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy*,
bridges::cpp_uno::shared::VtableSlot, _typelib_TypeDescriptionReference*, int,
_typelib_MethodParameter*, void*, void**, _uno_Any**) () from
solver/unxlngx6/installation/opt/ure/lib/libgcc3_uno.so
#11 0x00000000157dde1a in
bridges::cpp_uno::shared::unoInterfaceProxyDispatch(_uno_Interface*,
_typelib_TypeDescription const*, void*, void**, _uno_Any**) () from
solver/unxlngx6/installation/opt/ure/lib/libgcc3_uno.so
#12 0x000000001b23fdee in binaryurp::IncomingRequest::execute_throw
(this=0x1dc0d3d0, returnValue=0x1fe7f980, outArguments=0x1fe7f8f0) at
binaryurp/source/incomingrequest.cxx:263
#13 0x000000001b23ed43 in binaryurp::IncomingRequest::execute (this=0x1dc0d3d0)
at binaryurp/source/incomingrequest.cxx:89
#14 0x000000001b2599e8 in binaryurp::(anonymous namespace)::request
(pThreadSpecificData=0x1dc0d3d0) at binaryurp/source/reader.cxx:107
#15 0x00000000056c0a26 in cppu_threadpool::JobQueue::enter (this=0x1dc00e90,
nDisposeId=471903440, bReturnWhenNoJob=1 '\001') at
cppu/source/threadpool/jobqueue.cxx:124
#16 0x00000000056c4018 in cppu_threadpool::ORequestThread::run
(this=0x1c20acd0) at cppu/source/threadpool/thread.cxx:222
#17 0x00000000056c37b8 in cppu_requestThreadWorker (pVoid=0x1c20acd0) at
cppu/source/threadpool/thread.cxx:57
#18 0x0000000004c2f45b in osl_thread_start_Impl (pData=0x1dadc290) at
sal/osl/unx/thread.c:303
#19 0x0000003c26607d90 in start_thread (arg=0x1fe80700) at pthread_create.c:309
#20 0x0000003c262ef48d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 6 (Thread 16985):
#0  0x0000003c262f031c in __libc_recv (fd=<optimized out>, buf=<optimized out>,
n=<optimized out>, flags=<optimized out>) at
../sysdeps/unix/sysv/linux/x86_64/recv.c:34
#1  0x0000000004c25f95 in osl_receivePipe (pPipe=0xe0d6d60, pBuffer=0x1c28ae58,
BytesToRead=8) at sal/osl/unx/pipe.c:533
#2  0x0000000004c261d3 in osl_readPipe (pPipe=0xe0d6d60, pBuffer=0x1c28ae58,
n=8) at sal/osl/unx/pipe.c:625
#3  0x000000001abba0c0 in osl::StreamPipe::read(void*, int) const () from
solver/unxlngx6/installation/opt/ure/lib/acceptor.uno.so
#4  0x000000001abb94e8 in
io_acceptor::PipeConnection::read(com::sun::star::uno::Sequence<signed char>&,
int) () from solver/unxlngx6/installation/opt/ure/lib/acceptor.uno.so
#5  0x000000001b259807 in binaryurp::(anonymous namespace)::read
(connection=..., size=8, eofOk=true) at binaryurp/source/reader.cxx:88
#6  0x000000001b259c35 in binaryurp::Reader::execute (this=0xe1238e0) at
binaryurp/source/reader.cxx:126
#7  0x00000000060909d8 in salhelper::Thread::run (this=0xe1238e0) at
salhelper/source/thread.cxx:60
#8  0x0000000006091039 in osl::threadFunc (param=0xe1238f0) at
solver/unxlngx6/inc/osl/thread.hxx:197
#9  0x0000000004c2f45b in osl_thread_start_Impl (pData=0x16b1a640) at
sal/osl/unx/thread.c:303
#10 0x0000003c26607d90 in start_thread (arg=0x1ee7e700) at pthread_create.c:309
#11 0x0000003c262ef48d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 5 (Thread 16980):
#0  0x0000003c262f012d in accept () at ../sysdeps/unix/syscall-template.S:82
#1  0x0000000004c25d96 in osl_acceptPipe (pPipe=0xe0d5d10) at
sal/osl/unx/pipe.c:467
#2  0x000000001abb9fa4 in osl::Pipe::accept(osl::StreamPipe&) () from
solver/unxlngx6/installation/opt/ure/lib/acceptor.uno.so
#3  0x000000001abb9a75 in io_acceptor::PipeAcceptor::accept() () from
solver/unxlngx6/installation/opt/ure/lib/acceptor.uno.so
#4  0x000000001abb6225 in io_acceptor::OAcceptor::accept(rtl::OUString const&)
() from solver/unxlngx6/installation/opt/ure/lib/acceptor.uno.so
#5  0x000000001a99d2b1 in desktop::Acceptor::run (this=0x19653de0) at
desktop/source/offacc/acceptor.cxx:126
#6  0x000000001a99c978 in desktop::workerfunc (acc=0x19653de0) at
desktop/source/offacc/acceptor.cxx:44
#7  0x0000000004c2f45b in osl_thread_start_Impl (pData=0x1aec29e0) at
sal/osl/unx/thread.c:303
#8  0x0000003c26607d90 in start_thread (arg=0x1bc92700) at pthread_create.c:309
#9  0x0000003c262ef48d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 4 (Thread 16975):
#0  0x0000003c262f012d in accept () at ../sysdeps/unix/syscall-template.S:82
#1  0x0000000004c25d96 in osl_acceptPipe (pPipe=0x19411700) at
sal/osl/unx/pipe.c:467
#2  0x0000000004f3d114 in osl::Pipe::accept (this=0x19410058, Connection=...)
at solver/unxlngx6/inc/osl/pipe.hxx:141
#3  0x0000000004f3af6a in desktop::OfficeIPCThread::execute (this=0x19410030)
at desktop/source/app/officeipcthread.cxx:654
#4  0x00000000060909d8 in salhelper::Thread::run (this=0x19410030) at
salhelper/source/thread.cxx:60
#5  0x0000000006091039 in osl::threadFunc (param=0x19410040) at
solver/unxlngx6/inc/osl/thread.hxx:197
#6  0x0000000004c2f45b in osl_thread_start_Impl (pData=0x19412a20) at
sal/osl/unx/thread.c:303
#7  0x0000003c26607d90 in start_thread (arg=0x1a994700) at pthread_create.c:309
#8  0x0000003c262ef48d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 3 (Thread 16984):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:165
#1  0x0000000004c761b7 in osl_waitCondition (Condition=0xe1231b0, pTimeout=0x0)
at sal/osl/unx/conditn.cxx:297
#2  0x000000001b226e6a in osl::Condition::wait (this=0xe123048, pTimeout=0x0)
at solver/unxlngx6/inc/osl/conditn.hxx:84
#3  0x000000001b26060c in binaryurp::Writer::execute (this=0xe122e00) at
binaryurp/source/writer.cxx:155
#4  0x00000000060909d8 in salhelper::Thread::run (this=0xe122e00) at
salhelper/source/thread.cxx:60
#5  0x0000000006091039 in osl::threadFunc (param=0xe122e10) at
solver/unxlngx6/inc/osl/thread.hxx:197
#6  0x0000000004c2f45b in osl_thread_start_Impl (pData=0xe123820) at
sal/osl/unx/thread.c:303
#7  0x0000003c26607d90 in start_thread (arg=0x1a193700) at pthread_create.c:309
#8  0x0000003c262ef48d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 2 (Thread 16973):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:216
#1  0x0000000004c448d9 in rtl_cache_wsupdate_wait (seconds=10) at
sal/rtl/source/alloc_cache.cxx:1411
#2  0x0000000004c44ab0 in rtl_cache_wsupdate_all (arg=0xa) at
sal/rtl/source/alloc_cache.cxx:1551
#3  0x0000003c26607d90 in start_thread (arg=0x14de1700) at pthread_create.c:309
#4  0x0000003c262ef48d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 1 (Thread 16972):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:165
#1  0x0000000004c761b7 in osl_waitCondition (Condition=0x2807c0b0,
pTimeout=0x0) at sal/osl/unx/conditn.cxx:297
#2  0x00000000056c0872 in cppu_threadpool::JobQueue::enter (this=0x2807bca0,
nDisposeId=380740848, bReturnWhenNoJob=0 '\000') at
cppu/source/threadpool/jobqueue.cxx:90
#3  0x00000000056c83ea in cppu_threadpool::ThreadPool::enter (this=0xe1229c0,
aThreadId=..., nDisposeId=380740848) at
cppu/source/threadpool/threadpool.cxx:371
#4  0x00000000056c86f2 in uno_threadpool_enter (hPool=0x16b1a4f0,
ppJob=0x7feffdcb8) at cppu/source/threadpool/threadpool.cxx:450
#5  0x000000001b22127e in binaryurp::Bridge::makeCall (this=0x16b14d40,
oid="a48330;uno[0];4229;83389284dde54ef187a51fb1b14b426", member=...,
setter=false, inArguments=std::__debug::vector of length 1, capacity 1 = {...},
returnValue=0x7feffdeb0, outArguments=0x7feffde10) at
binaryurp/source/bridge.cxx:579
#6  0x000000001b258e44 in binaryurp::Proxy::do_dispatch_throw (this=0x16bcb890,
member=0x16bd20d0, returnValue=0x7feffe470, arguments=0x7feffe1b0,
exception=0x7feffe238) at binaryurp/source/proxy.cxx:192
#7  0x000000001b2587cf in binaryurp::Proxy::do_dispatch (this=0x16bcb890,
member=0x16bd20d0, returnValue=0x7feffe470, arguments=0x7feffe1b0,
exception=0x7feffe238) at binaryurp/source/proxy.cxx:118
#8  0x000000001b258555 in binaryurp::(anonymous
namespace)::proxy_dispatchInterface (pUnoI=0x16bcb890, pMemberType=0x16bd20d0,
pReturn=0x7feffe470, pArgs=0x7feffe1b0, ppException=0x7feffe238) at
binaryurp/source/proxy.cxx:71
#9  0x00000000157db68d in
cpp2uno_call(bridges::cpp_uno::shared::CppInterfaceProxy*,
_typelib_TypeDescription const*, _typelib_TypeDescriptionReference*, int,
_typelib_MethodParameter*, void**, void**, void**, unsigned long*) () from
solver/unxlngx6/installation/opt/ure/lib/libgcc3_uno.so
#10 0x00000000157dbffb in cpp_vtable_call () from
solver/unxlngx6/installation/opt/ure/lib/libgcc3_uno.so
#11 0x00000000157de10a in privateSnippetExecutor () from
solver/unxlngx6/installation/opt/ure/lib/libgcc3_uno.so
#12 0x00000000067b0dfc in
cppu::OInterfaceContainerHelper::NotifySingleListener<com::sun::star::document::XDocumentEventListener,
com::sun::star::document::DocumentEvent>::operator() (this=0x7feffe5b0,
listener=...) at solver/unxlngx6/inc/cppuhelper/interfacecontainer.h:272
#13 0x00000000067afec3 in
cppu::OInterfaceContainerHelper::forEach<com::sun::star::document::XDocumentEventListener,
cppu::OInterfaceContainerHelper::NotifySingleListener<com::sun::star::document::XDocumentEventListener,
com::sun::star::document::DocumentEvent> > (this=0x1dbf9a48, func=...) at
solver/unxlngx6/inc/cppuhelper/interfacecontainer.h:289
#14 0x00000000067af15a in
cppu::OInterfaceContainerHelper::notifyEach<com::sun::star::document::XDocumentEventListener,
com::sun::star::document::DocumentEvent> (this=0x1dbf9a48,
NotificationMethod=&virtual table offset 32, Event=...) at
solver/unxlngx6/inc/cppuhelper/interfacecontainer.h:303
#15 0x00000000067ad8d2 in SfxGlobalEvents_Impl::implts_notifyListener
(this=0x1dbf99b0, aEvent=...) at sfx2/source/notify/eventsupplier.cxx:848
#16 0x00000000067ac733 in SfxGlobalEvents_Impl::documentEventOccured
(this=0x1dbf99b0, _Event=...) at sfx2/source/notify/eventsupplier.cxx:654
#17 0x0000000006793f60 in (anonymous
namespace)::NotifySingleListenerIgnoreRE<com::sun::star::document::XDocumentEventListener,
com::sun::star::document::DocumentEvent>::operator() (this=0x7feffe7d0,
listener=...) at sfx2/source/doc/sfxbasemodel.cxx:2937
#18 0x0000000006793cd9 in
cppu::OInterfaceContainerHelper::forEach<com::sun::star::document::XDocumentEventListener,
{anonymous}::NotifySingleListenerIgnoreRE<com::sun::star::document::XDocumentEventListener,
com::sun::star::document::DocumentEvent> >(const (anonymous
namespace)::NotifySingleListenerIgnoreRE<com::sun::star::document::XDocumentEventListener,
com::sun::star::document::DocumentEvent> &) (this=0x1792c640, func=...) at
solver/unxlngx6/inc/cppuhelper/interfacecontainer.h:289
#19 0x000000000678bb1c in SfxBaseModel::postEvent_Impl (this=0x1976c860,
aName="OnPageCountChange", xController=...) at
sfx2/source/doc/sfxbasemodel.cxx:2973
#20 0x00000000067894b8 in SfxBaseModel::Notify (this=0x1976c860, rBC=...,
rHint=...) at sfx2/source/doc/sfxbasemodel.cxx:2601
#21 0x0000000006d6259b in SfxBroadcaster::Broadcast (this=0x18e04030,
rHint=...) at svl/source/notify/brdcst.cxx:64
#22 0x00000000064ba635 in SfxEventAsyncer_Impl::TimerHdl (this=0x1d2b51f0,
pAsyncTimer=0x1d2b7830) at sfx2/source/appl/appcfg.cxx:155
#23 0x00000000064ba4db in SfxEventAsyncer_Impl::LinkStubTimerHdl
(pThis=0x1d2b51f0, pCaller=0x1d2b7830) at sfx2/source/appl/appcfg.cxx:140
#24 0x0000000009023272 in Link::Call (this=0x1d2b7850, pCaller=0x1d2b7830) at
solver/unxlngx6/inc/tools/link.hxx:140
#25 0x00000000090456fd in Timer::Timeout (this=0x1d2b7830) at
vcl/source/app/timer.cxx:255
#26 0x0000000009045366 in Timer::ImplTimerCallbackProc () at
vcl/source/app/timer.cxx:143
#27 0x0000000016fd2877 in SalTimer::CallCallback (this=0x1dc9f7f0) at
vcl/inc/saltimer.hxx:66
#28 0x0000000016fd1c98 in SvpSalInstance::CheckTimeout (this=0x16d6c2c0,
bExecuteTimers=true) at vcl/headless/svpinst.cxx:176
#29 0x0000000016fd22c0 in SvpSalInstance::Yield (this=0x16d6c2c0, bWait=true,
bHandleAllCurrentEvents=false) at vcl/headless/svpinst.cxx:287
#30 0x000000000903a947 in ImplYield (i_bWait=true, i_bAllEvents=false) at
vcl/source/app/svapp.cxx:451
#31 0x0000000009036f39 in Application::Yield (i_bAllEvents=false) at
vcl/source/app/svapp.cxx:485
#32 0x0000000009036eda in Application::Execute () at
vcl/source/app/svapp.cxx:430
#33 0x0000000004f049bd in desktop::Desktop::Main (this=0x7fefff400) at
desktop/source/app/app.cxx:1811
#34 0x0000000009043052 in ImplSVMain () at vcl/source/app/svmain.cxx:178
#35 0x0000000009043198 in SVMain () at vcl/source/app/svmain.cxx:215
#36 0x0000000004f3f3f6 in soffice_main () at
desktop/source/app/sofficemain.cxx:75
#37 0x0000000000400734 in sal_main () at desktop/source/app/main.c:34
#38 0x0000000000400719 in main (argc=10, argv=0x7fefff5b8) at
desktop/source/app/main.c:33

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
_______________________________________________
Libreoffice-bugs mailing list
Libreoffice-bugs@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-bugs

Reply via email to