Base hangs when trying to close it

Michael Meeks michael.meeks at suse.com
Mon Mar 5 06:34:05 PST 2012


Hi Julien,

On Sun, 2012-03-04 at 12:02 -0800, julien2412 wrote:
> On master only (I don't have the problem on 3.5 branch), Base hangs when I
> try to close it. I must select "Tables"/"Queries" or others to have the
> problem. If I just open a file and close, i don't have this problem.

	Riight ... so this is down to the solar mutex being held in two threads
by the database code :-)

> I attached the result of "thread apply all bt" made after Ctrl-C during the
> hang.
> http://nabble.documentfoundation.org/file/n3798832/bt.txt bt.txt 

	Threads 1 and 2 are deadlocking over this during the join. The question
is - why does thread 1 still hold the solar mutex: prolly just because
it's an occupational hazard :-)

	The question is (given the fragile pile of poorly done threading code),
combined with the amazing bus-load of superstitious mutexes all around
the place, how best to fix it.

	I would say that the framework / UNO code -should- have no need of
holding the solar mutex, so ... I would be -tempted- to poke at:

	framework/source/dispatch/closedispatcher.cxx

	and split out the impl_asyncCallback thing into two pieces, one of
which is the LINK that we Post (and get called back into) from VCL. As
VCL calls us the solar mutex is locked, so we need in that version to
have a (brave):

	SolarMutexReleaser aReleaser;

	or somesuch around the call to what was the impl_asyncCallback.

	Hopefully, that will drop the (probably) un-necessary, and un-expected
solar mutex there, and - with luck, won't reveal yet more hidden nasties
inside the framework / dbaccess code.

	Any chance you could try that out ?

	Many thanks,

		Michael.


-- 
michael.meeks at suse.com  <><, Pseudo Engineer, itinerant idiot



More information about the LibreOffice mailing list