From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eduardo Habkost Subject: [PATCH] kvm-autotest: stepeditor: clear image if width, height, or data are invalid Date: Fri, 03 Apr 2009 18:43:14 -0300 Message-ID: <1238794446-sup-7467@blackpad> References: <20090401155558.GK19400@us.ibm.com> <1238790500-sup-8351@blackpad> Content-Type: text/plain; charset=UTF-8 Cc: Ryan Harper , "kvm@vger.kernel.org" To: Uri Lublin Return-path: Received: from mx2.redhat.com ([66.187.237.31]:55160 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753309AbZDCVnc (ORCPT ); Fri, 3 Apr 2009 17:43:32 -0400 In-Reply-To: <1238790500-sup-8351@blackpad> Sender: kvm-owner@vger.kernel.org List-ID: This patch fixes the following issue: Excerpts from Eduardo Habkost's message of Fri Apr 03 17:37:56 -0300 2009: > Excerpts from Ryan Harper's message of Wed Apr 01 12:55:58 -0300 2009: > > Wondering if anyone else using kvm-autotest stepmaker has ever seen this > > error: > > > > Traceback (most recent call last): > > File > > "/home/rharper/work/git/build/kvm-autotest/client/tests/kvm_runtest_2/stepmaker. > > py", line 146, in update > > self.set_image_from_file(self.screendump_filename) > > File > > "/home/rharper/work/git/build/kvm-autotest/client/tests/kvm_runtest_2/stepeditor > > .py", line 499, in set_image_from_file > > self.set_image(w, h, data) > > File > > "/home/rharper/work/git/build/kvm-autotest/client/tests/kvm_runtest_2/stepeditor > > .py", line 485, in set_image > > w, h, w*3)) > > MemoryError > > I've seen this error twice today, while trying to create a step file to > install a Windows 2008 R2 64-bit guest (the Win2008-64 step file > available on the git repository doesn't work for me). This happened when > the guest was being rebooted by the windows installer. The contents of > the screen dump file are this: > > $ cat > /home/ehabkost/autotest/kvm-autotest/client/results/default/kvm_runtest_2.Win200 > 8.64.install/debug/scrdump.ppm > P6 > 0 0 > 255 > $ > > And the 0x0 pixmap really makes gdk panic: > > >>> (w, h, data) = ppm_utils.image_read_from_ppm_file('/home/ehabkost/autotest/kvm-autotest/client/results/default/kvm_runtest_2.Win2008.64.install/debug/scrdump.ppm') > >>> w,h,data > (0, 0, '') > >>> gtk.gdk.pixbuf_new_from_data(data, gtk.gdk.COLORSPACE_RGB, False, 8, w, h, w*3) > Traceback (most recent call last): > File "", line 1, in ? > MemoryError > >>> Signed-off-by: Eduardo Habkost --- client/tests/kvm_runtest_2/stepeditor.py | 14 +++++++++----- 1 files changed, 9 insertions(+), 5 deletions(-) diff --git a/client/tests/kvm_runtest_2/stepeditor.py b/client/tests/kvm_runtest_2/stepeditor.py index caaf47b..383834b 100755 --- a/client/tests/kvm_runtest_2/stepeditor.py +++ b/client/tests/kvm_runtest_2/stepeditor.py @@ -488,14 +488,18 @@ Utilities vscrollbar = self.scrolledwindow.get_vscrollbar() vscrollbar.set_range(0, h) + def clear_image(self): + self.image.clear() + self.image_width = 0 + self.image_height = 0 + self.image_data = "" + def set_image_from_file(self, filename): if not filename or not os.path.exists(filename): - self.image.clear() - self.image_width = 0 - self.image_height = 0 - self.image_data = "" - return + return self.clear_image() (w, h, data) = ppm_utils.image_read_from_ppm_file(filename) + if w <= 0 or h <= 0 or not data: + return self.clear_image() self.set_image(w, h, data) def get_step_lines(self, output_dir=None, current_step=None): -- 1.5.5.6 -- Eduardo