On 29/06/2015 15:47, Piet van Oostrum wrote:
It is not completely clear if you are calling from a remote Python program, or
from inside LO.
Assuming that it is remote, yes, there are problems with listeners in this
situation. It can easily deadlock. I have posted a similar situation on this
list some months ago, where I did a paragraph enumeration in a listener
callback and it also deadlocked. See
lists.freedesktop.org/archives/libreoffice/2015-April/067601.html
Basically the conclusion was the LO does too much locking here, but that it
could not be avoided because of severe problems if it wouldn't lock.
It's remote - a test running as an external process.
The Python side of the deadlock is http://pastebin.com/qPkyVTkk
(this is a different run - the corresponding soffice.bin trace is
http://pastebin.com/g4F8zcUi )
The two things that seem to be happening are:
In thread 1, the main Python thread has got the Text property for the
text document being worked on, and PyUNO_new_UNCHECKED() is called to
make a Python object for the result, which calls
createInstanceWithArguments()
Meanwhile, in thread 2, the windowActivated() callback bas been
received, and pyuno::PyUNO_new_UNCHECKED() is called to make a Python
object for the argument, which calls createInstanceWithArguments()
If this sequence doesn't work, I'm not sure what if anything the Python
side can do better here.
Regards
Matthew Francis
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice