[virt-tools-list] [virt-manager] commit 5219e49e causes virt-manager hang
Cole Robinson
crobinso at redhat.com
Wed May 20 18:21:22 UTC 2015
On 05/20/2015 03:18 AM, Lin Ma wrote:
> Hi Cole,
>
> It seems that commit 5219e49e caused virt-manager to infinite recursion in
> certain cases.
> e.g: create new vm -> local install media -> select an iso(says fedora 21
> Server), Then the virt-manager hangs.
>
>
> Not sure whether the following changes make sense, just FYI:
> (actually I dont know which scenario meets the both of condition: 'if nothing
> is selected' and 'the widget is a combo box with a text entry')
>
> diff --git a/virtManager/uiutil.py b/virtManager/uiutil.py
> index 82d2c1d..40a7964 100644
> --- a/virtManager/uiutil.py
> +++ b/virtManager/uiutil.py
> @@ -77,10 +77,10 @@ def get_list_selection(widget, column=0,
> check_visible=False):
> return the value of that.
> """
> row = get_list_selected_row(widget, check_visible=check_visible)
> - if row is not None:
> + if row:
> return row[column]
>
> - if hasattr(widget, "get_has_entry"):
> + if row is not None and hasattr(widget, "get_has_entry"):
> if widget.get_has_entry():
> return widget.get_child().get_text().strip()
>
Thanks for the report. The root issue is that we are triggering recursive
events when repopulating the OS list in the new VM wizard, the uiutil change
just made it fatal :) I pushed this commit now:
commit 43340f46a2f3bdf9f3c5017539b2627c8f645be5
Author: Cole Robinson <crobinso at redhat.com>
Date: Wed May 20 14:18:09 2015 -0400
create: Fix infinite loop after uiutil rework
Repopulating the ostype/variant list triggers a bunch of change events,
which causes us to enter an infinite loop due to some minor behavior
change in the uiutil helpers.
The uiutil helpers are still correct, the root problem is we should be
disabling change events when repopulating those UI lists (we already
have to do a similar trick in a few other places, like host.py)
- Cole
More information about the virt-tools-list
mailing list