lib/oe/utils: Improve multiprocess_lauch exception handling

We've seen a cryptic:

"ERROR: Fatal errors occurred in subprocesses, tracebacks printed above"

message from oe-selftest with no other traceback information. Improve the
traceback logging to try and give a better indication of any errors that is
ocurring.

(From OE-Core rev: 521dd3d00979a27b6932e58d5497de68abac26e1)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2018-12-01 14:05:16 +00:00
parent ba89e87d8e
commit d8d5199e66
2 changed files with 7 additions and 2 deletions

View File

@ -318,9 +318,10 @@ def multiprocess_launch(target, items, d, extraargs=None):
for p in launched:
p.join()
if errors:
msg = ""
for (e, tb) in errors:
bb.error(str(tb))
bb.fatal("Fatal errors occurred in subprocesses, tracebacks printed above")
msg = msg + str(e) + ": " + str(tb) + "\n"
bb.fatal("Fatal errors occurred in subprocesses:\n%s" % msg)
return results
def squashspaces(string):

View File

@ -66,6 +66,9 @@ class TestMultiprocessLaunch(TestCase):
def dummyerror(msg):
print("ERROR: %s" % msg)
def dummyfatal(msg):
print("ERROR: %s" % msg)
raise bb.BBHandledException()
@contextmanager
def captured_output():
@ -79,6 +82,7 @@ class TestMultiprocessLaunch(TestCase):
d = bb.data_smart.DataSmart()
bb.error = dummyerror
bb.fatal = dummyfatal
# Assert the function returns the right results
result = multiprocess_launch(testfunction, ["3", "4", "5", "6"], d, extraargs=(d,))