diff options
author | Michael Stahl <mstahl@redhat.com> | 2015-08-04 23:36:13 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2015-08-04 23:50:54 +0200 |
commit | 62de18ab98289fc80984299f13ad71e4a4452ea3 (patch) | |
tree | 0be2ff3735dc1be6507611279f1efa8e9ca86558 /wizards | |
parent | c1617b8d74b5e232efeec864241ada89f874fe63 (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
Diffstat (limited to 'wizards')
-rw-r--r-- | wizards/com/sun/star/wizards/web/Process.py | 2 |
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 |