Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 656942 - sys-apps/portage: event loop recursion in Scheduler._task_complete call to BlockerDB.discardBlocker
Summary: sys-apps/portage: event loop recursion in Scheduler._task_complete call to Bl...
Status: RESOLVED FIXED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Core - Interface (emerge) (show other bugs)
Hardware: All All
: Normal normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords: InVCS, REGRESSION
Depends on:
Blocks: 651804 654390
  Show dependency tree
 
Reported: 2018-05-31 04:55 UTC by Zac Medico
Modified: 2018-06-06 16:33 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Zac Medico gentoo-dev 2018-05-31 04:55:17 UTC
(In reply to cyrillic from bug 656394, comment #3)
> portage-9999 continues to generate errors like this :
> 
> >>> Installing (1 of 9) dev-vcs/git-2.17.1::gentoo
>  * Please read /usr/share/bash-completion/git for Git bash command completion
>  * Please read /usr/share/git/git-prompt.sh for Git bash prompt
>  * Note that the prompt bash code is now in that separate script
>  * These additional scripts need some dependencies:
> 
>  *   git-quiltimport  : dev-util/quilt
>  *   git-instaweb     : || ( www-servers/lighttpd www-servers/apache
> www-servers/nginx )
> 
> Exception in callback AsynchronousTask.wait()
> handle: <Handle AsynchronousTask.wait()>
> Traceback (most recent call last):
>   File "/usr/lib64/python3.6/asyncio/events.py", line 145, in _run
>     self._callback(*self._args)
>   File "/usr/lib64/python3.6/site-packages/_emerge/AsynchronousTask.py",
> line 84, in wait
>     self._wait_hook()
>   File "/usr/lib64/python3.6/site-packages/_emerge/AsynchronousTask.py",
> line 195, in _wait_hook
>     self._exit_listener_stack.pop()(self)
>   File "/usr/lib64/python3.6/site-packages/_emerge/PackageMerge.py", line
> 49, in _install_exit
>     self.wait()
>   File "/usr/lib64/python3.6/site-packages/_emerge/AsynchronousTask.py",
> line 84, in wait
>     self._wait_hook()
>   File "/usr/lib64/python3.6/site-packages/_emerge/AsynchronousTask.py",
> line 195, in _wait_hook
>     self._exit_listener_stack.pop()(self)
>   File "/usr/lib64/python3.6/site-packages/_emerge/Scheduler.py", line 1267,
> in _merge_exit
>     self._do_merge_exit(merge)
>   File "/usr/lib64/python3.6/site-packages/_emerge/Scheduler.py", line 1302,
> in _do_merge_exit
>     self._task_complete(pkg)
>   File "/usr/lib64/python3.6/site-packages/_emerge/Scheduler.py", line 1375,
> in _task_complete
>     blocker_db.discardBlocker(pkg)
>   File "/usr/lib64/python3.6/site-packages/_emerge/BlockerDB.py", line 124,
> in discardBlocker
>     for slot_match in self._fake_vartree.dbapi.match_pkgs(pkg.slot_atom):
>   File "/usr/lib64/python3.6/site-packages/_emerge/PackageVirtualDbapi.py",
> line 71, in match_pkgs
>     return [self._cpv_map[cpv] for cpv in self.match(atom)]
>   File "/usr/lib64/python3.6/site-packages/_emerge/FakeVartree.py", line
> 115, in _match_wrapper
>     self._aux_get_wrapper(cpv, [])
>   File "/usr/lib64/python3.6/site-packages/_emerge/FakeVartree.py", line
> 129, in _aux_get_wrapper
>     myrepo=pkg.repo)))
>   File "/usr/lib64/python3.6/site-packages/portage/dbapi/porttree.py", line
> 588, in aux_get
>     myrepo=myrepo, loop=loop))
>   File
> "/usr/lib64/python3.6/site-packages/portage/util/_eventloop/
> asyncio_event_loop.py", line 104, in _run_until_complete
>     return self._loop.run_until_complete(future)
>   File "/usr/lib64/python3.6/asyncio/base_events.py", line 455, in
> run_until_complete
>     self.run_forever()
>   File "/usr/lib64/python3.6/asyncio/base_events.py", line 409, in
> run_forever
>     raise RuntimeError('This event loop is already running')
> RuntimeError: This event loop is already running
> 
>  * Messages for package dev-vcs/git-2.17.1:
> 
>  * These additional scripts need some dependencies:
>  *   git-quiltimport  : dev-util/quilt
>  *   git-instaweb     : || ( www-servers/lighttpd www-servers/apache
> www-servers/nginx )
> Traceback (most recent call last):
>   File "/usr/lib/python-exec/python3.6/emerge", line 53, in <module>
>     retval = emerge_main()
>   File "/usr/lib64/python3.6/site-packages/_emerge/main.py", line 1289, in
> emerge_main
>     return run_action(emerge_config)
>   File "/usr/lib64/python3.6/site-packages/_emerge/actions.py", line 3317,
> in run_action
>     retval = action_build(emerge_config, spinner=spinner)
>   File "/usr/lib64/python3.6/site-packages/_emerge/actions.py", line 541, in
> action_build
>     retval = mergetask.merge()
>   File "/usr/lib64/python3.6/site-packages/_emerge/Scheduler.py", line 1019,
> in merge
>     rval = self._merge()
>   File "/usr/lib64/python3.6/site-packages/_emerge/Scheduler.py", line 1413,
> in _merge
>     self._main_loop()
>   File "/usr/lib64/python3.6/site-packages/_emerge/Scheduler.py", line 1389,
> in _main_loop
>     self._event_loop.run_until_complete(self._main_exit)
>   File
> "/usr/lib64/python3.6/site-packages/portage/util/_eventloop/
> asyncio_event_loop.py", line 104, in _run_until_complete
>     return self._loop.run_until_complete(future)
>   File "/usr/lib64/python3.6/asyncio/base_events.py", line 466, in
> run_until_complete
>     raise RuntimeError('Event loop stopped before Future completed.')
> RuntimeError: Event loop stopped before Future completed.
> Future exception was never retrieved
> future: <Future finished exception=PortageKeyError('dev-vcs/git-2.17.0',)>
> portage.exception.PortageKeyError: 'dev-vcs/git-2.17.0'
> 
> The packages appear to install correctly, but --keep-going does not work in
> this case, and installing one package at a time is really tedious :(
Comment 1 Zac Medico gentoo-dev 2018-05-31 06:44:53 UTC
@cyrillic, I think that you must have used the emerge --nodeps/-O option in order to trigger this error, is that right?
Comment 2 Larry the Git Cow gentoo-dev 2018-05-31 08:44:25 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/proj/portage.git/commit/?id=d07a47ff3c06f6e8b2adc21ae29eecae07badc9e

commit d07a47ff3c06f6e8b2adc21ae29eecae07badc9e
Author:     Zac Medico <zmedico@gentoo.org>
AuthorDate: 2018-05-31 08:27:45 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2018-05-31 08:27:45 +0000

    emerge: make --nodeps disable --dynamic-deps (bug 656942)
    
    Since --nodeps disable's the depgraph's _dynamic_deps_preload code,
    calls to BlockerDB can trigger inappropriate calls to the FakeVartree
    _aux_get_wrapper method, triggering event loop recursion. Therefore,
    make --nodeps disable --dynamic-deps, in order to eliminate the
    inappropriate _aux_get_wrapper calls.
    
    Bug: https://bugs.gentoo.org/656942

 pym/_emerge/create_depgraph_params.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Comment 3 Larry the Git Cow gentoo-dev 2018-05-31 09:31:30 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=763a95a356ab845886e56a72f823f31f6b8a3436

commit 763a95a356ab845886e56a72f823f31f6b8a3436
Author:     Zac Medico <zmedico@gentoo.org>
AuthorDate: 2018-05-31 09:20:23 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2018-05-31 09:20:37 +0000

    sys-apps/portage: fix --nodeps with --keep-going (bug 656942)
    
    See: https://gitweb.gentoo.org/proj/portage.git/commit/?id=d07a47ff3c06f6e8b2adc21ae29eecae07badc9e
    Closes: https://bugs.gentoo.org/656942
    Package-Manager: Portage-2.3.40, Repoman-2.3.9

 sys-apps/portage/portage-2.3.40.ebuild | 4 ++++
 1 file changed, 4 insertions(+)
Comment 4 cyrillic 2018-05-31 12:53:23 UTC
(In reply to Zac Medico from comment #1)
> @cyrillic, I think that you must have used the emerge --nodeps/-O option in
> order to trigger this error, is that right?

Yes, I was using --nodeps
Comment 5 Zac Medico gentoo-dev 2018-05-31 18:16:39 UTC
(In reply to cyrillic from comment #4)
> (In reply to Zac Medico from comment #1)
> > @cyrillic, I think that you must have used the emerge --nodeps/-O option in
> > order to trigger this error, is that right?
> 
> Yes, I was using --nodeps

Great, then https://gitweb.gentoo.org/proj/portage.git/commit/?id=d07a47ff3c06f6e8b2adc21ae29eecae07badc9e solves the problem. Thanks for reporting!
Comment 6 Larry the Git Cow gentoo-dev 2018-06-06 16:33:18 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cfe44e894ae844ab8768dfd5584506750d0be297

commit cfe44e894ae844ab8768dfd5584506750d0be297
Author:     Zac Medico <zmedico@gentoo.org>
AuthorDate: 2018-06-06 16:26:12 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2018-06-06 16:27:21 +0000

    sys-apps/portage: 2.3.40-r1 revbump for regression fixes
    
    Fixes: https://bugs.gentoo.org/656610
    Fixes: https://bugs.gentoo.org/656750
    Fixes: https://bugs.gentoo.org/656942
    Fixes: https://bugs.gentoo.org/657360
    Fixes: https://bugs.gentoo.org/657420
    Fixes: https://bugs.gentoo.org/657436
    Package-Manager: Portage-2.3.40, Repoman-2.3.9

 sys-apps/portage/{portage-2.3.40.ebuild => portage-2.3.40-r1.ebuild} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)