Lionel Elie Mamane 1981819e81 fdo#63391 deadlock on opening .odb file that auto-connects to the database
Let foo.odb be a database file that has a macro that connects to the
Database on "Open Document" event (and needs to prompt user for
user/password).

There was a race condition between two actions:

 1) the asynchronous treatment of "OnFirstControllerConnected" in dbaui::OApplicationController,
    which tries to get dbaui::OApplicationController's mutex

 2) the StarBasic macro calling dbaui::OApplicationController::connect
    which needs to display a dialog (to get username and password),
    and thus puts that dialog in the main thread's event queue
    and waits for it ... with dbaui::OApplicationController's mutex held

Now, if "1)" is before "2)" in the event queue of the the main thread,
*but* "1)" is executed *after* "2)" has taken the lock, there is a deadlock.

Fix:

 1) Make OnFirstControllerConnected synchronous.
    Make sure (by taking mutex in dbaui::OApplicationController::attachFrame, its ancestor in the call graph)
    that nothing else will happen with the OApplicationController as long as it is not finished.
    ---> it does not need to take mutex itself anymore

    This avoids the "order in the asynchronous events" dependency.

 2) Change dbaui::OApplicationController::ensureConnection to do the user prompting
    WITHOUT HOLDING the mutex, and use the mutex "only" to protect actually assigning
    the connection to m_xDataSourceConnection.

    Theoretically, in some race condition, we could connect twice and then discard one connection <shrug>.
    ensureConnection will never return the discarded connection, though.

    (I think I got that right with respect to http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html)

    This keeps it from locking on another condition while holding the mutex.

Change-Id: Iab1bbec5d5df12bb89d027d43e498c78c92ffc32
Reviewed-on: https://gerrit.libreoffice.org/3310
Reviewed-by: David Tardon <dtardon@redhat.com>
Tested-by: David Tardon <dtardon@redhat.com>
2013-04-29 12:58:23 +00:00
2013-04-26 18:01:51 +02:00
2013-04-28 14:33:26 +00:00
2013-04-26 18:45:59 +02:00
2013-04-23 20:18:02 +00:00
2013-04-29 04:19:34 +00:00
2013-04-24 05:17:10 +00:00
2013-04-26 10:42:49 +02:00
2013-04-16 13:37:13 +02:00
2013-04-27 23:04:15 +02:00
2013-04-22 14:26:47 +01:00
2013-04-21 18:29:58 +00:00
2013-04-24 19:43:28 +03:00
2013-04-13 09:26:17 +02:00
2013-04-27 12:04:20 +02:00
2013-04-27 12:04:20 +02:00
2013-04-17 10:24:13 +03:00
2013-04-24 14:22:53 +02:00
2013-04-29 11:28:35 +00:00
2013-04-25 13:55:17 +02:00
2013-04-29 11:29:16 +02:00
2013-04-09 19:29:12 +02:00
2013-04-24 18:14:10 +03:00
2013-04-22 08:14:46 +02:00
2013-04-27 15:27:30 +02:00
2013-04-21 18:57:17 +02:00
2013-04-18 15:45:37 +02:00
2013-04-19 12:09:01 +02:00
2013-04-14 13:52:26 +02:00
2013-04-29 13:05:51 +02:00
2013-04-27 15:55:31 +02:00
2013-04-28 16:34:25 +02:00
2013-04-26 08:38:50 +02:00
2013-04-24 19:27:10 +02:00
2013-04-23 22:20:31 +02:00
2013-04-26 15:56:32 +03:00
2013-04-24 05:18:15 +00:00
2013-04-29 13:00:36 +02:00
2013-04-29 13:55:21 +01:00
2013-04-28 16:28:46 +02:00
2013-04-26 13:40:11 +02:00
2013-04-24 05:18:03 +00:00
2013-04-27 23:04:15 +02:00
2013-04-27 23:04:15 +02:00
2013-04-19 07:51:15 +00:00
2013-04-18 03:59:51 +00:00
2013-04-26 14:41:36 +02:00
2013-04-27 17:14:12 +02:00
2013-04-25 10:17:14 +02:00
2013-04-17 11:51:14 +02:00
2013-04-24 05:18:15 +00:00
2013-04-24 15:16:31 +02:00
2013-04-27 23:04:15 +02:00
2013-04-29 10:28:19 +00:00
2013-04-28 14:31:57 +00:00
2013-04-26 18:01:51 +02:00
2013-04-26 18:01:51 +02:00
2013-04-26 15:12:50 +00:00
2013-04-24 11:09:49 +02:00
2013-04-08 15:34:31 +02:00
2013-04-29 04:19:34 +00:00

solver means "Solar Version", a weird name with only historical significance now

It has no relation to the verb "to solve".

solver is the directory tree into which header files for inter-module
use and build results (libraries, shared libraries, executables) are
copied ("delivered") during the build, and from where they are then
picked up when constructing an installer (Windows), a RPM or deb
package (Linux) or an app bundle (Mac).
Description
LibreOffice mirror (not auto-updating).
Readme 1.9 GiB
Languages
C++ 82.4%
Java 5.3%
Rich Text Format 2.3%
PostScript 1.9%
Python 1.9%
Other 5.7%