Kaydet (Commit) 774a2911 authored tarafından Michael Stahl's avatar Michael Stahl Kaydeden (comit) Andras Timar

tdf#76845: wizards: fix Web wizard XSLT deadlock on Windows

The web wizard runs some XSLT over the exported file.  It registers
a handler that is called when the output stream is closed, and this
Process.streamClosedHandler() calls terminate(), which causes the
deadlock, because it wants to join() the extra XSLT thread but the
handler is actually called from the XSLT thread itself.

Fix that by moving the terminate() to another function that runs in the
main thread.

It does not deadlock on Unixes because osl_joinWithThread() actually
detects an attempt to join the calling thread and returns early.

Change-Id: Ia176562fa28b97c7e8956c1e8975c9aa6ee23236
(cherry picked from commit 62de18ab)
Reviewed-on: https://gerrit.libreoffice.org/17511Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
üst edc0785f
......@@ -375,6 +375,7 @@ class Process(ProcessErrors):
self.tf.start()
while (not self.tfCompleted):
pass
self.tf.terminate()
task.advance(True)
......@@ -400,7 +401,6 @@ class Process(ProcessErrors):
print ("DEBUG !!! Stream 'error' event handler")
def streamClosedHandler(self, parent):
parent.tf.terminate()
parent.tfCompleted = True
# I broke the export method to two methods
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment