vcl::Window::dispose deadlock

Stephan Bergmann sbergman at redhat.com
Tue Jun 9 01:06:58 PDT 2015


On 06/09/2015 10:02 AM, Noel Grandin wrote:
> On 2015-06-09 09:58 AM, Stephan Bergmann wrote:
>> On Windows, with master as of last night, "make check" happened to run
>> into a deadlock in soffice.bin as below.  The
>> main thread is trying to re-acquire the SolarMutex (after a
>> SolarMutexReleaser) from within the event loop, while an
>> incoming URP thread (apparently holding the SolarMutex) does
>> vcl::Window::dispose which, on Windows, blocks on sending a
>> message into the event loop.
>
> Shouldn't something that blocks on sending a message into the event loop
> drop the SolarMutex while it waits for the reply, and then reacquire it
> afterwards?

I'm not sure how this happened to work before introduction of 
Window::dispose (which got introduced as part of the VclPtr work, IIUC). 
  But doing release/re-acquire of the SolarMutex deep down the call 
stack has its own perils (and probably creates just as many data races 
as it helps work around deadlocks).


More information about the LibreOffice mailing list