<br><font size=2 face="sans-serif">I have a similar problem under SIP 3.3/PyQt
3.3/Qt 3.0.4. I haven't solved it, though. I don't know if it's a SIP/PyQt
problem or a Qt problem.</font>
<br>
<br><font size=2 face="sans-serif">I think you will find that the focusData()
list is corrupted or has corrupted objects in it. In your case, looks like
the QWidget destructor is scanning the focusData() list and finding a QWidget
supposedly at address 0xffffffff. No wonder Qt has a problem finding this
object's parent.</font>
<br>
<br><font size=2 face="sans-serif">In my case, I see crashes when using
tab to change the keyboard focus. This leads to a similar scan of focusData(),
and crashes when focusProxy() gets called on a non-existant or corrupted
widget.</font>
<br>
<br><font size=2 face="sans-serif">The corruption must happen sometime
previously, but I don't know when. It seems related to deleting widgets/items
associated with a table. In my case, I'm deleting and recreating the entire
table. As far as I can tell by watching reference counts and using prints
in __del__ methods, the deletions are happening as expected at the python
level. This is supposed to clean up the focusData() list. Somehow either
the cleanup isn't happening or the list/objects are being overwritten in
some other way.</font>
<br>
<br><font size=2 face="sans-serif">That's as far as I've gotten. Hope that
helps.</font>
<br><font size=2 face="sans-serif"><br>
_________________________________<br>
Andy Anderson<br>
MSC.Software Corporation<br>
Andy.Anderson@mscsoftware.com<br>
</font>
<br><font size=2><tt>pykde-admin@mats.imk.fraunhofer.de wrote on 11/11/2003
01:16:08 AM:<br>
<br>
> Ok, in changing selection/focus from one table cell to another, thisis
what I <br>
> got (I'm using sip-3.8/pyqt-3.8.1/qt-3.2.2):<br>
> <br>
> Program received signal SIGSEGV, Segmentation fault.<br>
> [Switching to Thread 16384 (LWP 2947)]<br>
> 0x404cf324 in QObject::parent() const (this=0xffffffff) at qobject.h:154<br>
> 154 qobject.h: No such file or directory.<br>
> in qobject.h<br>
> (gdb) bt<br>
> #0 0x404cf324 in QObject::parent() const (this=0xffffffff) at
qobject.h:154<br>
> #1 0x404ce0d3 in QWidget::parentWidget(bool) const (this=0xffffffff,
<br>
> sameWindow=false) at qwidget.h:852<br>
> #2 0x405f2c3b in ~QWidget (this=0x8ac60d0) at kernel/qwidget.cpp:895<br>
> #3 0x4068b42f in ~QFrame (this=0x8ac60d0) at .moc/debug-shared-mt/<br>
> moc_qvbox.cpp:28<br>
> #4 0x406a3c67 in ~QLineEdit (this=0x8ac60d0) at widgets/qlineedit.cpp:441<br>
> #5 0x405b40a6 in QObject::event(QEvent*) (this=0x8ac60d0, e=0x8a8c2c8)
at <br>
> kernel/qobject.cpp:750<br>
> #6 0x405f9591 in QWidget::event(QEvent*) (this=0x8ac60d0, e=0x8a8c2c8)
at <br>
> kernel/qwidget.cpp:4408<br>
> #7 0x406a59f2 in QLineEdit::event(QEvent*) (this=0x8ac60d0,
e=0x8a8c2c8) at <br>
> widgets/qlineedit.cpp:1406<br>
> ...<br>
> I'll include the rest below for the interested... It looks like the
parent <br>
> information was somehow invalid? It doesn't look like the destructor
did <br>
> anything that it shouldn't have, but I didn't really trace through
the whole <br>
> thing.<br>
> <br>
> kernel/qwidget.cpp:895:<br>
> <br>
> 886 // Remove myself and all children
from the can-take-focus list<br>
> 887 QFocusData *f = focusData( FALSE );<br>
> 888 if ( f ) {<br>
> 889 QPtrListIterator<QWidget> it(f->focusWidgets);<br>
> 890 QWidget *w;<br>
> 891 while ( (w = it.current()) ) {<br>
> 892 ++it;<br>
> 893 QWidget * p = w;<br>
> 894 while( p &&
p != this )<br>
> 895 p = p->parentWidget();<br>
> 896 if ( p ) // my descendant<br>
> 897 f->focusWidgets.removeRef(
w );<br>
> 898 }<br>
> 899 }<br>
> <br>
</tt></font>