diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2019-12-23 15:44:36 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2019-12-23 18:01:49 -0500 |
commit | 7fb6fc15d88778f15a49ab1e63bdf550c2c7c981 (patch) | |
tree | a4985bf25d77981e8894e15a8bbe4f2f49fdde79 /coverage/multiproc.py | |
parent | 42a651c6e23b4156c5bc37208d97d0788e09edf7 (diff) | |
download | python-coveragepy-git-7fb6fc15d88778f15a49ab1e63bdf550c2c7c981.tar.gz |
Catch and display expceptions during multiprocessing bootstrap.
Diffstat (limited to 'coverage/multiproc.py')
-rw-r--r-- | coverage/multiproc.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/coverage/multiproc.py b/coverage/multiproc.py index bab81475..c466301f 100644 --- a/coverage/multiproc.py +++ b/coverage/multiproc.py @@ -6,6 +6,8 @@ import multiprocessing import multiprocessing.process import os +import sys +import traceback from coverage import env from coverage.misc import contract @@ -27,14 +29,20 @@ class ProcessWithCoverage(OriginalProcess): # pylint: disable=abstract-m def _bootstrap(self, *args, **kwargs): # pylint: disable=arguments-differ """Wrapper around _bootstrap to start coverage.""" - from coverage import Coverage # avoid circular import - cov = Coverage(data_suffix=True) - cov._warn_preimported_source = False - cov.start() - debug = cov._debug try: + from coverage import Coverage # avoid circular import + cov = Coverage(data_suffix=True) + cov._warn_preimported_source = False + cov.start() + debug = cov._debug if debug.should("multiproc"): debug.write("Calling multiprocessing bootstrap") + except Exception: + print("Exception during multiprocessing bootstrap init:") + traceback.print_exc(file=sys.stdout) + sys.stdout.flush() + raise + try: return original_bootstrap(self, *args, **kwargs) finally: if debug.should("multiproc"): |