Fix Sphinx crashes on parallel build with an extension which raises unserializable exception

This commit is contained in:
Takeshi KOMIYA
2017-01-08 01:38:45 +09:00
parent f1d2a7ffaa
commit 4153ee0d9d
3 changed files with 7 additions and 5 deletions

View File

@@ -27,6 +27,8 @@ Bugs fixed
* #3294: ``add_latex_package()`` make crashes non-LaTeX builders
* The caption of table are rendered as invalid HTML (refs: #3287)
* #3268: Sphinx crashes with requests package from Debian jessie
* #3284: Sphinx crashes on parallel build with an extension which raises
unserializable exception
Release 1.5.1 (released Dec 13, 2016)

View File

@@ -71,10 +71,9 @@ class SphinxParallelError(SphinxError):
category = 'Sphinx parallel build error'
def __init__(self, orig_exc, traceback):
self.orig_exc = orig_exc
def __init__(self, message, traceback):
self.message = message
self.traceback = traceback
def __str__(self):
return traceback.format_exception_only(
self.orig_exc.__class__, self.orig_exc)[0].strip()
return self.message

View File

@@ -73,7 +73,8 @@ class ParallelTasks(object):
ret = func(arg)
pipe.send((False, ret))
except BaseException as err:
pipe.send((True, (err, traceback.format_exc())))
errmsg = traceback.format_exception_only(err.__class__, err)[0].strip()
pipe.send((True, (errmsg, traceback.format_exc())))
def add_task(self, task_func, arg=None, result_func=None):
tid = self._taskid