Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


On Tue, 2013-05-14 at 11:49 +0200, Stephan Bergmann wrote:
On 05/13/2013 07:12 PM, Lionel Elie Mamane wrote:
Base or Base-related code seems to have some issues around the
"SolarMutex".

https://bugs.freedesktop.org/show_bug.cgi?id=61725
https://bugs.freedesktop.org/show_bug.cgi?id=64241
(and others historically)

Please educate me on the SolarMutex. What is its meaning, when should
be held/acquired, ... From
http://cgit.freedesktop.org/libreoffice/core/commit/?id=b34b8d3372364b3c5043da0357ec69505e8d8602,
my "guess" is that it is related to GUI stuff. Maybe it should be held
when calling a GUI (that is, GTK/Win32/QT/...) function? But it can't
be that simple, else vcl would "just do it"... It seems to expect
higher-level code to hold it already. Why?

Historically, the SolarMutex was assumed to be a clever solution to the 
problem of turning StarOffice from a single-threaded application to a 
multi-threaded one---lock the SolarMutex around any code that is not yet 
thread-safe, and be done with it.  Or so people thought.

The world has long since found out that "single global mutex" is a 
horrible idea for GUI applications (where all GUI frameworks have 
settled on "confine relevant code to run in a single event-loop thread" 
instead).

This leaves us with completely unmaintainable ("where do I need to lock 
SolarMutex?"---"nobody knows for sure") and broken (cf. 
SolarMutexReleaser) code.

Incidentally, I had exactly the same problem with 
<https://gerrit.libreoffice.org/#/c/3894/> "TODO: Ensure SolarMutex is 
locked at DBG_TESTSOLARMUTEX checkpoints" last night.

Yeah, and I'm continually dithering as to where to put one for the
various writer mail merge wizard "oh my god its not locked" asserts.

C.


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.