summaryrefslogtreecommitdiff
path: root/coverage/multiproc.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2019-12-23 15:44:36 -0500
committerNed Batchelder <ned@nedbatchelder.com>2019-12-23 18:01:49 -0500
commit7fb6fc15d88778f15a49ab1e63bdf550c2c7c981 (patch)
treea4985bf25d77981e8894e15a8bbe4f2f49fdde79 /coverage/multiproc.py
parent42a651c6e23b4156c5bc37208d97d0788e09edf7 (diff)
downloadpython-coveragepy-git-7fb6fc15d88778f15a49ab1e63bdf550c2c7c981.tar.gz
Catch and display expceptions during multiprocessing bootstrap.
Diffstat (limited to 'coverage/multiproc.py')
-rw-r--r--coverage/multiproc.py18
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"):