1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-08 17:19:20 +00:00

bitbake: cooker: Handle parse threads disappearing to avoid hangs

If one of the parse threads disappears during parsing for some reason, bitbake
currently hangs. Avoid this (and zombie threads hanging around) by joining()
threads which have exited.

(Bitbake rev: dc86a533d951d13643ce446533370da804782afc)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2021-11-08 13:24:58 +00:00
parent d8e5d5fc16
commit bf411441f5
+10 -1
View File
@@ -2040,6 +2040,7 @@ class Parser(multiprocessing.Process):
result = pending.pop()
else:
try:
time.sleep(0.25)
job = self.jobs.pop()
except IndexError:
self.results.close()
@@ -2218,7 +2219,7 @@ class CookerParser(object):
yield not cached, mc, infos
def parse_generator(self):
while True:
while self.processes:
if self.parsed >= self.toparse:
break
@@ -2232,6 +2233,14 @@ class CookerParser(object):
raise value
else:
yield result
for process in self.processes.copy():
if not process.is_alive():
process.join()
self.processes.remove(process)
if not (self.parsed >= self.toparse):
raise bb.parse.ParseError("Not all recipes parsed, parser thread killed/died? Exiting.", None)
def parse_next(self):
result = []