summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2015-08-04 23:36:13 +0200
committerMichael Stahl <mstahl@redhat.com>2015-08-04 23:50:54 +0200
commit62de18ab98289fc80984299f13ad71e4a4452ea3 (patch)
tree0be2ff3735dc1be6507611279f1efa8e9ca86558
parentc1617b8d74b5e232efeec864241ada89f874fe63 (diff)
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
-rw-r--r--wizards/com/sun/star/wizards/web/Process.py2
1 files changed, 1 insertions, 1 deletions
diff --git a/wizards/com/sun/star/wizards/web/Process.py b/wizards/com/sun/star/wizards/web/Process.py
index 3de4c6c2bf7b..3c1121d912a4 100644
--- a/wizards/com/sun/star/wizards/web/Process.py
+++ b/wizards/com/sun/star/wizards/web/Process.py
@@ -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