From kfm-devel Mon Dec 18 13:42:49 2006 From: David Faure Date: Mon, 18 Dec 2006 13:42:49 +0000 To: kfm-devel Subject: recent khtml regression Message-Id: <200612181442.49634.faure () kde ! org> X-MARC-Message: https://marc.info/?l=kfm-devel&m=116645112724652 khtml now crashes when I try to log in on www.voyages-sncf.com (by pressing Enter). Valgrind trace below. Basically, the lineedit gets deleted by a DeferredDelete event executed while the dialog box asking whether to save the form contents in kwallet is up. Seems obvious, but then I wonder why it didn't happen before. Sounds like some event handling code is still being executed in the deleted node after the whole page was deleted. Anyone changed event handling recently? ==19957== ==19957== Invalid read of size 4 ==19957== at 0x5020A86: QLineEdit::selectedText() const (qlineedit.cpp:973) ==19957== by 0x478D08E: KLineEdit::keyPressEvent(QKeyEvent*) (klineedit.cpp:809) ==19957== by 0x7481E84: khtml::RenderWidget::EventPropagator::sendEvent(QEvent*) (render_replaced.cpp:711) ==19957== by 0x7482A93: khtml::RenderWidget::handleEvent(DOM::EventImpl const&) (render_replaced.cpp:858) ==19957== by 0x740E82A: DOM::HTMLGenericFormElementImpl::defaultEventHandler(DOM::EventImpl*) (html_formimpl.cpp:994) ==19957== by 0x74173B7: DOM::HTMLInputElementImpl::defaultEventHandler(DOM::EventImpl*) (html_formimpl.cpp:1805) ==19957== by 0x73C6336: DOM::NodeImpl::dispatchGenericEvent(DOM::EventImpl*, int&) (dom_nodeimpl.cpp:398) ==19957== by 0x73C4B1A: DOM::NodeImpl::dispatchEvent(DOM::EventImpl*, int&, bool) (dom_nodeimpl.cpp:342) ==19957== by 0x73C52B7: DOM::NodeImpl::dispatchKeyEvent(QKeyEvent*, bool) (dom_nodeimpl.cpp:578) ==19957== by 0x7347228: KHTMLView::dispatchKeyEventHelper(QKeyEvent*, bool) (khtmlview.cpp:1380) ==19957== by 0x7347332: KHTMLView::dispatchKeyEvent(QKeyEvent*) (khtmlview.cpp:1336) ==19957== by 0x734C2FF: KHTMLView::keyPressEvent(QKeyEvent*) (khtmlview.cpp:1465) ==19957== by 0x73465C2: KHTMLView::eventFilter(QObject*, QEvent*) (khtmlview.cpp:1924) ==19957== by 0x4F45CC5: QObject::activate_filters(QEvent*) (qobject.cpp:903) ==19957== by 0x4F45D43: QObject::event(QEvent*) (qobject.cpp:735) ==19957== by 0x4F8323B: QWidget::event(QEvent*) (qwidget.cpp:4659) ==19957== by 0x5028D62: QLineEdit::event(QEvent*) (qlineedit.cpp:1412) ==19957== by 0x748E03F: khtml::LineEditWidget::event(QEvent*) (render_form.cpp:419) ==19957== by 0x4EDF07F: QApplication::internalNotify(QObject*, QEvent*) (qapplication.cpp:2635) ==19957== by 0x4EDF411: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:2392) ==19957== by 0x4A433A6: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==19957== by 0x4E70F54: QApplication::sendSpontaneousEvent(QObject*, QEvent*) (qapplication.h:499) ==19957== by 0x4E652E4: QETWidget::translateKeyEvent(_XEvent const*, bool) (qapplication_x11.cpp:5501) ==19957== by 0x4E6B267: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3488) ==19957== by 0x4E841D2: QEventLoop::processEvents(unsigned) (qeventloop_x11.cpp:192) ==19957== by 0x4EF75FA: QEventLoop::enterLoop() (qeventloop.cpp:198) ==19957== by 0x4EF751D: QEventLoop::exec() (qeventloop.cpp:145) ==19957== by 0x4EDDD12: QApplication::exec() (qapplication.cpp:2758) ==19957== by 0x408986F: kdemain (konq_main.cc:206) ==19957== by 0x8048691: main (kdeinit_konqueror.cpp:2) ==19957== Address 0x623F59C is 148 bytes inside a block of size 204 free'd ==19957== at 0x4020CC7: operator delete(void*) (vg_replace_malloc.c:244) ==19957== by 0x748E811: khtml::LineEditWidget::~LineEditWidget() (render_form.cpp:322) ==19957== by 0x4F45DE1: QObject::event(QEvent*) (qobject.cpp:750) ==19957== by 0x4F8323B: QWidget::event(QEvent*) (qwidget.cpp:4659) ==19957== by 0x5028D62: QLineEdit::event(QEvent*) (qlineedit.cpp:1412) ==19957== by 0x748E03F: khtml::LineEditWidget::event(QEvent*) (render_form.cpp:419) ==19957== by 0x4EDF07F: QApplication::internalNotify(QObject*, QEvent*) (qapplication.cpp:2635) ==19957== by 0x4EDFB72: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:2523) ==19957== by 0x4A433A6: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==19957== by 0x40A4BD2: QApplication::sendEvent(QObject*, QEvent*) (qapplication.h:496) ==19957== by 0x4EE031E: QApplication::sendPostedEvents(QObject*, int) (qapplication.cpp:3270) ==19957== by 0x4EE0425: QApplication::sendPostedEvents() (qapplication.cpp:3181) ==19957== by 0x4E84122: QEventLoop::processEvents(unsigned) (qeventloop_x11.cpp:144) ==19957== by 0x4EF75FA: QEventLoop::enterLoop() (qeventloop.cpp:198) ==19957== by 0x4EDDD3E: QApplication::enter_loop() (qapplication.cpp:2793) ==19957== by 0x50FB8AF: QDialog::exec() (qdialog.cpp:432) ==19957== by 0x481F193: KMessageBox::createKMessageBox(KDialogBase*, QPixmap, QString const&, QStringList const&, QString const&, bool*, int, QString const&, QMessageBox::Icon) (kmessagebox.cpp:309) ==19957== by 0x481F55C: KMessageBox::createKMessageBox(KDialogBase*, QMessageBox::Icon, QString const&, QStringList const&, QString const&, bool*, int, QString const&) (kmessagebox.cpp:146) ==19957== by 0x74169F5: DOM::HTMLFormElementImpl::submit() (html_formimpl.cpp:628) ==19957== by 0x7416EF2: DOM::HTMLFormElementImpl::prepareSubmit() (html_formimpl.cpp:553) ==19957== by 0x7416F73: DOM::HTMLInputElementImpl::activate() (html_formimpl.cpp:1819) ==19957== by 0x74173A5: DOM::HTMLInputElementImpl::defaultEventHandler(DOM::EventImpl*) (html_formimpl.cpp:1802) ==19957== by 0x73C6336: DOM::NodeImpl::dispatchGenericEvent(DOM::EventImpl*, int&) (dom_nodeimpl.cpp:398) ==19957== by 0x73C4B1A: DOM::NodeImpl::dispatchEvent(DOM::EventImpl*, int&, bool) (dom_nodeimpl.cpp:342) ==19957== by 0x73C6029: DOM::NodeImpl::dispatchUIEvent(int, int) (dom_nodeimpl.cpp:550) ==19957== by 0x73C6409: DOM::NodeImpl::dispatchGenericEvent(DOM::EventImpl*, int&) (dom_nodeimpl.cpp:402) ==19957== by 0x73C4B1A: DOM::NodeImpl::dispatchEvent(DOM::EventImpl*, int&, bool) (dom_nodeimpl.cpp:342) ==19957== by 0x73C6A05: DOM::NodeImpl::dispatchMouseEvent(QMouseEvent*, int, int) (dom_nodeimpl.cpp:532) ==19957== by 0x740E61A: DOM::HTMLInputElementImpl::click() (html_formimpl.cpp:1372) ==19957== by 0x74176A3: DOM::HTMLFormElementImpl::submitFromKeyboard() (html_formimpl.cpp:488) ==19957== by 0x748DF12: khtml::RenderLineEdit::slotReturnPressed() (render_form.cpp:506) ==19957== by 0x748DF5D: khtml::RenderLineEdit::qt_invoke(int, QUObject*) (render_form.moc:330) ==19957== by 0x4F48B7C: QObject::activate_signal(QConnectionList*, QUObject*) (qobject.cpp:2356) ==19957== by 0x4F49617: QObject::activate_signal(int) (qobject.cpp:2325) ==19957== by 0x52F0560: QLineEdit::returnPressed() (moc_qlineedit.cpp:225) ==19957== by 0x5029224: QLineEdit::keyPressEvent(QKeyEvent*) (qlineedit.cpp:1543) ==19957== by 0x478D07C: KLineEdit::keyPressEvent(QKeyEvent*) (klineedit.cpp:807) ==19957== by 0x7481E84: khtml::RenderWidget::EventPropagator::sendEvent(QEvent*) (render_replaced.cpp:711) ==19957== by 0x7482A93: khtml::RenderWidget::handleEvent(DOM::EventImpl const&) (render_replaced.cpp:858) ==19957== by 0x740E82A: DOM::HTMLGenericFormElementImpl::defaultEventHandler(DOM::EventImpl*) (html_formimpl.cpp:994) ==19957== by 0x74173B7: DOM::HTMLInputElementImpl::defaultEventHandler(DOM::EventImpl*) (html_formimpl.cpp:1805) ==19957== by 0x73C6336: DOM::NodeImpl::dispatchGenericEvent(DOM::EventImpl*, int&) (dom_nodeimpl.cpp:398) ==19957== by 0x73C4B1A: DOM::NodeImpl::dispatchEvent(DOM::EventImpl*, int&, bool) (dom_nodeimpl.cpp:342) ==19957== by 0x73C52B7: DOM::NodeImpl::dispatchKeyEvent(QKeyEvent*, bool) (dom_nodeimpl.cpp:578) ==19957== by 0x7347228: KHTMLView::dispatchKeyEventHelper(QKeyEvent*, bool) (khtmlview.cpp:1380) ==19957== by 0x7347332: KHTMLView::dispatchKeyEvent(QKeyEvent*) (khtmlview.cpp:1336) ==19957== by 0x734C2FF: KHTMLView::keyPressEvent(QKeyEvent*) (khtmlview.cpp:1465) ==19957== by 0x73465C2: KHTMLView::eventFilter(QObject*, QEvent*) (khtmlview.cpp:1924) ==19957== by 0x4F45CC5: QObject::activate_filters(QEvent*) (qobject.cpp:903) ==19957== by 0x4F45D43: QObject::event(QEvent*) (qobject.cpp:735) -- David Faure, faure@kde.org, sponsored by Trolltech to work on KDE, Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).