--nextPart6813873.9IGvEMU56g Content-Type: text/plain; charset="iso-8859-2" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On Friday 08 September 2006 10:10, Andras Mantia wrote: > and nobody did anything solving the > problem until now, so if nobody has better idea, I would like to see > our applications not crash, even if it's not the true fix... I spent quite some time debugging this using gdb and valgrind, but I=20 give up now. Valgrind reports: Quanta: focusW: [NewMainWindow pointer (0xb382ad8) to widget MainWindow,=20 geometry=3D800x600+0+39] topLevelWidget: [NewMainWindow pointer=20 (0xb382ad8) to widget MainWindow, geometry=3D800x600+0+39] x11Display:=20 0xace2ea8 =3D=3D30009=3D=3D =3D=3D30009=3D=3D Invalid read of size 1 =3D=3D30009=3D=3D at 0x8879680: QWidget::topLevelWidget() const=20 (qwidget.cpp:2359) =3D=3D30009=3D=3D by 0xE58BCB5: QXIMInputContext::setMicroFocus(int, int= ,=20 int, int, QFont*) (qximinputcontext_x11.cpp:758) =3D=3D30009=3D=3D by 0x87C89F3: QWidget::setMicroFocusHint(int, int, int= ,=20 int, bool, QFont*) (qwidget_x11.cpp:981) =3D=3D30009=3D=3D by 0xF5C7C82: TEWidget::setCursorPos(int, int)=20 (TEWidget.cpp:793) =3D=3D30009=3D=3D by 0xF5D8F79: TEmulation::showBulk() (TEmulation.cpp:4= 71) =3D=3D30009=3D=3D by 0xF5D9027: TEmulation::setConnect(bool)=20 (TEmulation.cpp:494) =3D=3D30009=3D=3D by 0xF5CF923: TEmuVt102::setConnect(bool)=20 (TEmuVt102.cpp:1195) =3D=3D30009=3D=3D by 0xF5BB692: TESession::setConnect(bool) (session.cpp= :352) =3D=3D30009=3D=3D by 0xF5B18DD: konsolePart::newSession()=20 (konsole_part.cpp:1088) =3D=3D30009=3D=3D by 0xF5B193C: konsolePart::startProgram(QString const&= ,=20 QStrList const&) (konsole_part.cpp:1054) =3D=3D30009=3D=3D by 0xF5AE81E: konsolePart::showShellInDir(QString cons= t&)=20 (konsole_part.cpp:1102) =3D=3D30009=3D=3D by 0xF5ADD22: konsolePart::showShell()=20 (konsole_part.cpp:1117) =3D=3D30009=3D=3D by 0xF5ADD4F: konsolePart::autoShowShell()=20 (konsole_part.cpp:212) =3D=3D30009=3D=3D by 0xF5B498B: konsolePart::qt_invoke(int, QUObject*)=20 (konsole_part.moc:334) =3D=3D30009=3D=3D by 0x884B7AB: QObject::activate_signal(QConnectionList= *,=20 QUObject*) (qobject.cpp:2356) =3D=3D30009=3D=3D by 0x8B2D307: QSignal::signal(QVariant const&)=20 (moc_qsignal.cpp:100) =3D=3D30009=3D=3D by 0x88642B4: QSignal::activate() (qsignal.cpp:212) =3D=3D30009=3D=3D by 0x886A8D7: QSingleShotTimer::event(QEvent*)=20 (qtimer.cpp:286) =3D=3D30009=3D=3D by 0x87F4984: QApplication::internalNotify(QObject*,=20 QEvent*) (qapplication.cpp:2636) =3D=3D30009=3D=3D by 0x87F55B6: QApplication::notify(QObject*, QEvent*)= =20 (qapplication.cpp:2359) =3D=3D30009=3D=3D Address 0x15403774 is not stack'd, malloc'd or (recently= )=20 free'd =3D=3D30009=3D=3D =3D=3D30009=3D=3D Invalid read of size 8 =3D=3D30009=3D=3D at 0x887968A: QWidget::topLevelWidget() const=20 (qobject.h:154) =3D=3D30009=3D=3D by 0xE58BCB5: QXIMInputContext::setMicroFocus(int, int= ,=20 int, int, QFont*) (qximinputcontext_x11.cpp:758) =3D=3D30009=3D=3D by 0x87C89F3: QWidget::setMicroFocusHint(int, int, int= ,=20 int, bool, QFont*) (qwidget_x11.cpp:981) =3D=3D30009=3D=3D by 0xF5C7C82: TEWidget::setCursorPos(int, int)=20 (TEWidget.cpp:793) =3D=3D30009=3D=3D by 0xF5D8F79: TEmulation::showBulk() (TEmulation.cpp:4= 71) =3D=3D30009=3D=3D by 0xF5D9027: TEmulation::setConnect(bool)=20 (TEmulation.cpp:494) =3D=3D30009=3D=3D by 0xF5CF923: TEmuVt102::setConnect(bool)=20 (TEmuVt102.cpp:1195) =3D=3D30009=3D=3D by 0xF5BB692: TESession::setConnect(bool) (session.cpp= :352) =3D=3D30009=3D=3D by 0xF5B18DD: konsolePart::newSession()=20 (konsole_part.cpp:1088) =3D=3D30009=3D=3D by 0xF5B193C: konsolePart::startProgram(QString const&= ,=20 QStrList const&) (konsole_part.cpp:1054) =3D=3D30009=3D=3D by 0xF5AE81E: konsolePart::showShellInDir(QString cons= t&)=20 (konsole_part.cpp:1102) =3D=3D30009=3D=3D by 0xF5ADD22: konsolePart::showShell()=20 (konsole_part.cpp:1117) =3D=3D30009=3D=3D by 0xF5ADD4F: konsolePart::autoShowShell()=20 (konsole_part.cpp:212) =3D=3D30009=3D=3D by 0xF5B498B: konsolePart::qt_invoke(int, QUObject*)=20 (konsole_part.moc:334) =3D=3D30009=3D=3D by 0x884B7AB: QObject::activate_signal(QConnectionList= *,=20 QUObject*) (qobject.cpp:2356) =3D=3D30009=3D=3D by 0x8B2D307: QSignal::signal(QVariant const&)=20 (moc_qsignal.cpp:100) =3D=3D30009=3D=3D by 0x88642B4: QSignal::activate() (qsignal.cpp:212) =3D=3D30009=3D=3D by 0x886A8D7: QSingleShotTimer::event(QEvent*)=20 (qtimer.cpp:286) =3D=3D30009=3D=3D by 0x87F4984: QApplication::internalNotify(QObject*,=20 QEvent*) (qapplication.cpp:2636) =3D=3D30009=3D=3D by 0x87F55B6: QApplication::notify(QObject*, QEvent*)= =20 (qapplication.cpp:2359) =3D=3D30009=3D=3D Address 0x15403708 is not stack'd, malloc'd or (recently= )=20 free'd =3D=3D30009=3D=3D =3D=3D30009=3D=3D Invalid read of size 1 =3D=3D30009=3D=3D at 0x88796A8: QWidget::topLevelWidget() const=20 (qwidget.cpp:2359) =3D=3D30009=3D=3D by 0xE58BCB5: QXIMInputContext::setMicroFocus(int, int= ,=20 int, int, QFont*) (qximinputcontext_x11.cpp:758) =3D=3D30009=3D=3D by 0x87C89F3: QWidget::setMicroFocusHint(int, int, int= ,=20 int, bool, QFont*) (qwidget_x11.cpp:981) =3D=3D30009=3D=3D by 0xF5C7C82: TEWidget::setCursorPos(int, int)=20 (TEWidget.cpp:793) =3D=3D30009=3D=3D by 0xF5D8F79: TEmulation::showBulk() (TEmulation.cpp:4= 71) =3D=3D30009=3D=3D by 0xF5D9027: TEmulation::setConnect(bool)=20 (TEmulation.cpp:494) =3D=3D30009=3D=3D by 0xF5CF923: TEmuVt102::setConnect(bool)=20 (TEmuVt102.cpp:1195) =3D=3D30009=3D=3D by 0xF5BB692: TESession::setConnect(bool) (session.cpp= :352) =3D=3D30009=3D=3D by 0xF5B18DD: konsolePart::newSession()=20 (konsole_part.cpp:1088) =3D=3D30009=3D=3D by 0xF5B193C: konsolePart::startProgram(QString const&= ,=20 QStrList const&) (konsole_part.cpp:1054) =3D=3D30009=3D=3D by 0xF5AE81E: konsolePart::showShellInDir(QString cons= t&)=20 (konsole_part.cpp:1102) =3D=3D30009=3D=3D by 0xF5ADD22: konsolePart::showShell()=20 (konsole_part.cpp:1117) =3D=3D30009=3D=3D by 0xF5ADD4F: konsolePart::autoShowShell()=20 (konsole_part.cpp:212) =3D=3D30009=3D=3D by 0xF5B498B: konsolePart::qt_invoke(int, QUObject*)=20 (konsole_part.moc:334) =3D=3D30009=3D=3D by 0x884B7AB: QObject::activate_signal(QConnectionList= *,=20 QUObject*) (qobject.cpp:2356) =3D=3D30009=3D=3D by 0x8B2D307: QSignal::signal(QVariant const&)=20 (moc_qsignal.cpp:100) =3D=3D30009=3D=3D by 0x88642B4: QSignal::activate() (qsignal.cpp:212) =3D=3D30009=3D=3D by 0x886A8D7: QSingleShotTimer::event(QEvent*)=20 (qtimer.cpp:286) =3D=3D30009=3D=3D by 0x87F4984: QApplication::internalNotify(QObject*,=20 QEvent*) (qapplication.cpp:2636) =3D=3D30009=3D=3D by 0x87F55B6: QApplication::notify(QObject*, QEvent*)= =20 (qapplication.cpp:2359) =3D=3D30009=3D=3D Address 0x73006E006F00E7 is not stack'd, malloc'd or=20 (recently) free'd KCrash: crashing... crashRecursionCounter =3D 2 KCrash: Application Name =3D kdevelop path =3D pid =3D 30009 Which gives a hint that the topLevelWidget might be corrupted. I copied=20 the code from QXIMInputContext::setMicroFocus into the konsole part=20 just before the setMicroFocusHint is called and it does not crash=20 there. The problem might be that the QXIMInputContext itself is=20 corrupted! In QWidget::setMicroFocusHint the inputcontext is created,=20 or retrieved from icWidget->topData()->xic. Might be a problem=20 somewhere here and in some cases this returns an invalid pointer. It is true that I do not see any assignment to QWidget::topData()->xic=20 [=3DQWidget::extra->topExtra->xic] but one place to set it to 0 and=20 commented as "created lazily", altough it is used in many places. Maybe someone can look at it and see if I'm right here, or the problem=20 is in another place. Until that I still recommend the hasFocus() workaround. Andras =2D-=20 Quanta Plus developer - http://quanta.kdewebdev.org K Desktop Environment - http://www.kde.org --nextPart6813873.9IGvEMU56g Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) iD8DBQBFAS69TQdfac6L/08RAi75AJ9k14wPvnPqVbYdxsJIe47kFWpjtACfUFvS C+hmvFasJJQOsOIUYqbVpnI= =qqZr -----END PGP SIGNATURE----- --nextPart6813873.9IGvEMU56g--