The BinpkgFetcher.lock method calls async_lock.wait(), which triggers event loop recursion until the lock has been acquired. The lock method only appears to be called from the start method (no external callers).
Patch posted for review:
The bug has been referenced in the following commit(s):
Author: Zac Medico <email@example.com>
AuthorDate: 2018-04-21 19:18:08 +0000
Commit: Zac Medico <firstname.lastname@example.org>
CommitDate: 2018-04-22 00:50:57 +0000
BinpkgFetcher: use async lock (bug 614110)
In order to avoid event loop recursion, convert the
_BinpkgFetcherProcess.lock() method to an async_lock
method for use by BinpkgFetcher.
Reviewed-by: Brian Dolbec <email@example.com>
pym/_emerge/BinpkgFetcher.py | 53 +++++++++++++++++++++++++++-----------------
1 file changed, 33 insertions(+), 20 deletions(-)}
Fixed in portage-2.3.40-r1.