We were simluating the continue click before consuming all the messages in the queue, which would cause the next hub to be in use, but we were attempting to process messages for the previous hub. It would cause a crash of anaconda, but not a backtrace that could be caught with our autoreporter. The solution is to only continue when the queue is empty.
This also makes use of a property to see if we are ready to continue instead of duplicating code. --- pyanaconda/ui/gui/hubs/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/pyanaconda/ui/gui/hubs/__init__.py b/pyanaconda/ui/gui/hubs/__init__.py index 13f6192..3a88cc3 100644 --- a/pyanaconda/ui/gui/hubs/__init__.py +++ b/pyanaconda/ui/gui/hubs/__init__.py @@ -278,11 +278,12 @@ class Hub(GUIObject, common.Hub): if not args[1]: spoke.execute()
- if len(self._incompleteSpokes) == 0 and len(self._notReadySpokes) == 0: + if self.continuePossible: if self._inSpoke: self._autoContinue = True else: - self.continueButton.emit("clicked") + if q.empty(): + self.continueButton.emit("clicked") elif code == communication.HUB_CODE_MESSAGE: spoke.selector.set_property("status", args[1])
On Thu, 2012-10-25 at 20:40 -0700, Jesse Keating wrote:
We were simluating the continue click before consuming all the messages in the queue, which would cause the next hub to be in use, but we were attempting to process messages for the previous hub. It would cause a crash of anaconda, but not a backtrace that could be caught with our autoreporter. The solution is to only continue when the queue is empty.
It is not a crash, it just hits the place in pyanaconda/ui/gui/__init__.py:GraphicalUserInterface._on_continue_clicked which calls sys.exit(0). See my patch from Tuesday which I think should also be applied together with this one. However this patch looks to me as a nice solution for an awkward problem. Just please see one comment below.
This also makes use of a property to see if we are ready to continue instead of duplicating code.
pyanaconda/ui/gui/hubs/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/pyanaconda/ui/gui/hubs/__init__.py b/pyanaconda/ui/gui/hubs/__init__.py index 13f6192..3a88cc3 100644 --- a/pyanaconda/ui/gui/hubs/__init__.py +++ b/pyanaconda/ui/gui/hubs/__init__.py @@ -278,11 +278,12 @@ class Hub(GUIObject, common.Hub): if not args[1]: spoke.execute()
if len(self._incompleteSpokes) == 0 and len(self._notReadySpokes) == 0:
if self.continuePossible: if self._inSpoke: self._autoContinue = True else:
self.continueButton.emit("clicked")
if q.empty():self.continueButton.emit("clicked")
The else-if could be replaced with:
elif q.empty(): self.continueButton.emit("clicked")
anaconda-patches@lists.fedorahosted.org