Re: linux-next: Tree for Nov 1 (xconfig problem)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Monday 02 November 2015 08:44:01 Randy Dunlap wrote:
> > Randy, we need a backtrace. The problem is on the function that called
> > first(). Can you make sure the crash generates a core dump, then get the
> > bt
> > from that?
> 
> ASSERT: "!isEmpty()" in file /usr/include/QtCore/qlist.h, line 282
> ../scripts/kconfig/Makefile:22: recipe for target 'xconfig' failed
> make[2]: *** [xconfig] Aborted (core dumped)
[cut]
> #4  0x00007f858c3eec44 in qFatal(char const*, ...) ()
>     at /usr/lib64/libQtCore.so.4
> #5  0x00007f858c3eec8a in  () at /usr/lib64/libQtCore.so.4
> #6  0x00000000004206cc in ConfigList::updateSelection() ()

Thanks, Randy.

This seems to be it:

        if (selectedItems().count() == 0)
                return;

        ConfigItem* item = (ConfigItem*)selectedItems().first();

Which means this shouldn't be happening. I don't know how the list could be 
non-empty in one call and empty in the next.  It's wasteful to call 
selectedItems() twice (it's not a cheap function), but it shouldn't cause this 
issue.

We can easily just cache the result and this is what the attached patch does, 
but given that this error makes no sense to me, I cannot guarantee that you 
don't have another problem elsewhere.

Boris, do you have another idea?
-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center
>From 32426c8282d0ec48f20000bc8e9a9c89c3060c8d Mon Sep 17 00:00:00 2001
From: Thiago Macieira <thiago.macieira@xxxxxxxxx>
Date: Mon, 2 Nov 2015 11:55:56 -0500
Subject: [PATCH 1/1] Cache the result of QTreeWidget::selectedItems()

It's not a cheap function, so let's not call it twice.

Signed-off-by: Thiago Macieira <thiago.macieira@xxxxxxxxx>
---
 scripts/kconfig/qconf.cc | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc
index 91b7e6f..920a252 100644
--- a/scripts/kconfig/qconf.cc
+++ b/scripts/kconfig/qconf.cc
@@ -400,10 +400,11 @@ void ConfigList::updateSelection(void)
 	struct menu *menu;
 	enum prop_type type;
 
-	if (selectedItems().count() == 0)
+	QList<QTreeWidgetItem *> items = selectedItems();
+	if (items.count() == 0)
 		return;
 
-	ConfigItem* item = (ConfigItem*)selectedItems().first();
+	ConfigItem* item = (ConfigItem*)items.first();
 	if (!item)
 		return;
 
-- 
2.6.2


[Index of Archives]     [Linux Kernel]     [Linux USB Development]     [Yosemite News]     [Linux SCSI]

  Powered by Linux