Version: (using Devel) Compiler: gcc (GCC) 4.2.4 (Ubuntu 4.2.4-1ubuntu3) OS: Irix Installed from: Compiled sources I'm getting a crash in Konqueror from trunk rev. 875277 and also 4.1.2 (Kubuntu) if an input line has focus (try the one on the left, below "Actions") and I change the view profile to "File Management" via "Settings->Load View Profile->File Management". Application: Konqueror (konqueror), signal SIGSEGV Thread 1 (Thread 0xb5d9d8d0 (LWP 13602)): [KCrash Handler] #6 0xb7ed60a6 in KonqView::isPassiveMode (this=0x0) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqview.h:286 #7 0xb7f2b313 in KonqMainWindow::slotPartActivated (this=0x81166b8, part=0x82b47f8) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqmainwindow.cpp:1979 #8 0xb7ee7518 in KonqViewManager::emitActivePartChanged (this=0x80d1a68) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqviewmanager.cpp:1023 #9 0xb7ee7936 in KonqViewManager::doSetActivePart (this=0x80d1a68, part=0x82b47f8) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqviewmanager.cpp:994 #10 0xb7ee7956 in KonqViewManager::setActivePart (this=0x80d1a68, part=0x82b47f8) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqviewmanager.cpp:955 #11 0xb66d4b97 in KParts::PartManager::eventFilter (this=0x80d1a68, obj=0x82b4d00, ev=0xbf9fcd88) at /home/kde-devel/kde/src/KDE/kdelibs/kparts/partmanager.cpp:282 #12 0xb74f897d in QCoreApplicationPrivate::sendThroughApplicationEventFilters (this=0x805d1a0, receiver=0x82b4d00, event=0xbf9fcd88) at kernel/qcoreapplication.cpp:682 #13 0xb68422ec in QApplicationPrivate::notify_helper (this=0x805d1a0, receiver=0x82b4d00, e=0xbf9fcd88) at kernel/qapplication.cpp:3784 #14 0xb6844199 in QApplication::notify (this=0xbf9fed20, receiver=0x82b4d00, e=0xbf9fcd88) at kernel/qapplication.cpp:3774 #15 0xb7a6971f in KApplication::notify (this=0xbf9fed20, receiver=0x82b4d00, event=0xbf9fcd88) at /home/kde-devel/kde/src/KDE/kdelibs/kdeui/kernel/kapplication.cpp:307 #16 0xb74faa71 in QCoreApplication::notifyInternal (this=0xbf9fed20, receiver=0x82b4d00, event=0xbf9fcd88) at kernel/qcoreapplication.cpp:593 #17 0xb74ff041 in QCoreApplication::sendEvent (receiver=0x82b4d00, event=0xbf9fcd88) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215 #18 0xb68459cb in QApplicationPrivate::setFocusWidget (focus=0x82b4d00, reason=Qt::OtherFocusReason) at kernel/qapplication.cpp:2005 #19 0xb68a3188 in QWidget::setFocus (this=0x82b4d00, reason=Qt::OtherFocusReason) at kernel/qwidget.cpp:5382 #20 0xb3c5de49 in QWidget::setFocus (this=0x82b4d00) at /home/kde-devel/qt-copy/include/QtGui/qwidget.h:409 #21 0xb3cd3b91 in DOM::DocumentImpl::quietResetFocus (this=0x845a6e0) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/xml/dom_docimpl.cpp:2386 #22 0xb3c4f166 in KHTMLView::focusNextPrevNode (this=0x82b4d00, next=true) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/khtmlview.cpp:2512 #23 0xb3c4fda4 in KHTMLView::focusNextPrevChild (this=0x82b4d00, next=true) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/khtmlview.cpp:2056 #24 0xb68a3427 in QWidget::focusNextPrevChild (this=0x82b4910, next=true) at kernel/qwidget.cpp:5516 #25 0xb68a3427 in QWidget::focusNextPrevChild (this=0x864d6a8, next=true) at kernel/qwidget.cpp:5516 #26 0xb68a3427 in QWidget::focusNextPrevChild (this=0x8488a68, next=true) at kernel/qwidget.cpp:5516 #27 0xb68a9479 in QWidgetPrivate::hide_helper (this=0x83209b0) at kernel/qwidget.cpp:6467 #28 0xb68b0bc1 in QWidget::setVisible (this=0x8488a68, visible=false) at kernel/qwidget.cpp:6621 #29 0xb3c584ae in QWidget::hide (this=0x8488a68) at /home/kde-devel/qt-copy/include/QtGui/qwidget.h:474 #30 0xb3e09284 in ~RenderWidget (this=0x8368bfc) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/rendering/render_replaced.cpp:231 #31 0xb3e15f1e in ~RenderFormElement (this=0x8368bfc) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/rendering/render_form.cpp:96 #32 0xb3e198c6 in ~RenderLineEdit (this=0x8368bfc) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/rendering/render_form.h:248 #33 0xb3dbeab2 in khtml::RenderObject::arenaDelete (this=0x8368c04, arena=0x8486ad8, base=0x8368bfc) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/rendering/render_object.cpp:1896 #34 0xb3dbeb1c in khtml::RenderObject::arenaDelete (this=0x8368c04, arena=0x8486ad8) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/rendering/render_object.cpp:1909 #35 0xb3e03b50 in khtml::RenderWidget::deref (this=0x8368bfc) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/rendering/render_replaced.cpp:1171 #36 0xb3e095b4 in khtml::RenderWidget::detach (this=0x8368bfc) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/rendering/render_replaced.cpp:223 #37 0xb3ceb118 in DOM::NodeImpl::detach (this=0x837ecc8) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/xml/dom_nodeimpl.cpp:984 #38 0xb3ceb18e in DOM::NodeBaseImpl::detach (this=0x837ecc8) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/xml/dom_nodeimpl.cpp:1749 #39 0xb3cfc060 in DOM::ElementImpl::detach (this=0x837ecc8) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/xml/dom_elementimpl.cpp:844 #40 0xb3ceb17d in DOM::NodeBaseImpl::detach (this=0x833bc58) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/xml/dom_nodeimpl.cpp:1747 #41 0xb3cfc060 in DOM::ElementImpl::detach (this=0x833bc58) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/xml/dom_elementimpl.cpp:844 #42 0xb3ceb17d in DOM::NodeBaseImpl::detach (this=0x845ee20) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/xml/dom_nodeimpl.cpp:1747 #43 0xb3cfc060 in DOM::ElementImpl::detach (this=0x845ee20) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/xml/dom_elementimpl.cpp:844 #44 0xb3ceb17d in DOM::NodeBaseImpl::detach (this=0x83377d0) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/xml/dom_nodeimpl.cpp:1747 #45 0xb3cfc060 in DOM::ElementImpl::detach (this=0x83377d0) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/xml/dom_elementimpl.cpp:844 #46 0xb3ceb17d in DOM::NodeBaseImpl::detach (this=0x845a6ec) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/xml/dom_nodeimpl.cpp:1747 #47 0xb3cd5c41 in DOM::DocumentImpl::detach (this=0x845a6e0) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/xml/dom_docimpl.cpp:1511 #48 0xb3c81895 in KHTMLPart::clear (this=0x82b47f8) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/khtml_part.cpp:1454 #49 0xb3c90a31 in ~KHTMLPart (this=0x82b47f8) at /home/kde-devel/kde/src/KDE/kdelibs/khtml/khtml_part.cpp:534 #50 0xb7ee19e2 in ~KonqView (this=0x82c4a88) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqview.cpp:132 #51 0xb7eea557 in KonqViewManager::clear (this=0x80d1a68) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqviewmanager.cpp:652 #52 0xb7eea920 in KonqViewManager::loadViewProfileFromGroup (this=0x80d1a68, profileGroup=@0xbf9fd72c, filename=@0xbf9fd884, forcedUrl=@0xbf9fd840, req=@0xbf9fd7c8, openUrl=true) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqviewmanager.cpp:899 #53 0xb7eead89 in KonqViewManager::loadViewProfileFromConfig (this=0x80d1a68, _cfg=@0xbf9fd780, path=@0xbf9fd888, filename=@0xbf9fd884, forcedUrl=@0xbf9fd840, req=@0xbf9fd7c8, resetWindow=false, openUrl=true) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqviewmanager.cpp:880 #54 0xb7eeae41 in KonqViewManager::loadViewProfileFromFile (this=0x80d1a68, path=@0xbf9fd888, filename=@0xbf9fd884, forcedUrl=@0xbf9fd840, req=@0xbf9fd7c8, resetWindow=false, openUrl=true) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqviewmanager.cpp:836 #55 0xb7eebc61 in KonqViewManager::slotProfileActivated (this=0x80d1a68, action=0x80c3510) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqviewmanager.cpp:1361 #56 0xb7eed1fe in KonqViewManager::qt_metacall (this=0x80d1a68, _c=QMetaObject::InvokeMetaMethod, _id=5, _a=0xbf9fd9fc) at /home/kde-devel/kde/build/KDE/kdebase/apps/konqueror/src/konqviewmanager.moc:90 #57 0xb7512923 in QMetaObject::activate (sender=0x822d1e0, from_signal_index=29, to_signal_index=29, argv=0xbf9fd9fc) at kernel/qobject.cpp:3037 #58 0xb7512ead in QMetaObject::activate (sender=0x822d1e0, m=0xb71716c8, local_signal_index=2, argv=0xbf9fd9fc) at kernel/qobject.cpp:3107 #59 0xb6ccc244 in QMenu::triggered (this=0x822d1e0, _t1=0x80c3510) at .moc/debug-shared/moc_qmenu.cpp:156 #60 0xb6ccfe31 in QMenuPrivate::_q_actionTriggered (this=0x8230aa8) at widgets/qmenu.cpp:1071 #61 0xb6cd3feb in QMenu::qt_metacall (this=0x822d1e0, _c=QMetaObject::InvokeMetaMethod, _id=8, _a=0xbf9fdb8c) at .moc/debug-shared/moc_qmenu.cpp:98 #62 0xb7b46fd2 in KMenu::qt_metacall (this=0x822d1e0, _c=QMetaObject::InvokeMetaMethod, _id=35, _a=0xbf9fdb8c) at /home/kde-devel/kde/build/KDE/kdelibs/kdeui/kmenu.moc:69 #63 0xb7512923 in QMetaObject::activate (sender=0x80c3510, from_signal_index=5, to_signal_index=6, argv=0xbf9fdb8c) at kernel/qobject.cpp:3037 #64 0xb7512c14 in QMetaObject::activate (sender=0x80c3510, m=0xb716b878, from_local_signal_index=1, to_local_signal_index=2, argv=0xbf9fdb8c) at kernel/qobject.cpp:3127 #65 0xb68390da in QAction::triggered (this=0x80c3510, _t1=false) at .moc/debug-shared/moc_qaction.cpp:216 #66 0xb683b0fa in QAction::activate (this=0x80c3510, event=QAction::Trigger) at kernel/qaction.cpp:1131 #67 0xb6cd5d08 in QMenuPrivate::activateAction (this=0x8230aa8, action=0x80c3510, action_e=QAction::Trigger, self=true) at widgets/qmenu.cpp:1008 #68 0xb6cd875f in QMenu::mouseReleaseEvent (this=0x822d1e0, e=0xbf9fe3b8) at widgets/qmenu.cpp:2175 #69 0xb7b46e90 in KMenu::mouseReleaseEvent (this=0x822d1e0, e=0xbf9fe3b8) at /home/kde-devel/kde/src/KDE/kdelibs/kdeui/widgets/kmenu.cpp:452 #70 0xb68ab101 in QWidget::event (this=0x822d1e0, event=0xbf9fe3b8) at kernel/qwidget.cpp:7169 #71 0xb6cd3868 in QMenu::event (this=0x822d1e0, e=0xbf9fe3b8) at widgets/qmenu.cpp:2271 #72 0xb6842445 in QApplicationPrivate::notify_helper (this=0x805d1a0, receiver=0x822d1e0, e=0xbf9fe3b8) at kernel/qapplication.cpp:3809 #73 0xb6842f44 in QApplication::notify (this=0xbf9fed20, receiver=0x822d1e0, e=0xbf9fe3b8) at kernel/qapplication.cpp:3534 #74 0xb7a6971f in KApplication::notify (this=0xbf9fed20, receiver=0x822d1e0, event=0xbf9fe3b8) at /home/kde-devel/kde/src/KDE/kdelibs/kdeui/kernel/kapplication.cpp:307 #75 0xb74faa71 in QCoreApplication::notifyInternal (this=0xbf9fed20, receiver=0x822d1e0, event=0xbf9fe3b8) at kernel/qcoreapplication.cpp:593 #76 0xb684fe63 in QCoreApplication::sendSpontaneousEvent (receiver=0x822d1e0, event=0xbf9fe3b8) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:218 #77 0xb6847590 in QApplicationPrivate::sendMouseEvent (receiver=0x822d1e0, event=0xbf9fe3b8, alienWidget=0x0, nativeWidget=0x822d1e0, buttonDown=0xb7189800, lastMouseReceiver=@0xb7189804) at kernel/qapplication.cpp:2799 #78 0xb68d2170 in QETWidget::translateMouseEvent (this=0x822d1e0, event=0xbf9fe97c) at kernel/qapplication_x11.cpp:3982 #79 0xb68cf9cd in QApplication::x11ProcessEvent (this=0xbf9fed20, event=0xbf9fe97c) at kernel/qapplication_x11.cpp:3044 #80 0xb68ffaf9 in x11EventSourceDispatch (s=0x80600a8, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:148 #81 0xb6027cc6 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #82 0xb602b083 in ?? () from /usr/lib/libglib-2.0.so.0 #83 0xb602b63e in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #84 0xb752fff8 in QEventDispatcherGlib::processEvents (this=0x805d2a8, flags=@0xbf9feb14) at kernel/qeventdispatcher_glib.cpp:325 #85 0xb68ff1c8 in QGuiEventDispatcherGlib::processEvents (this=0x805d2a8, flags=@0xbf9feb44) at kernel/qguieventdispatcher_glib.cpp:204 #86 0xb74f72ee in QEventLoop::processEvents (this=0xbf9febcc, flags=@0xbf9feb84) at kernel/qeventloop.cpp:149 #87 0xb74f752d in QEventLoop::exec (this=0xbf9febcc, flags=@0xbf9febd4) at kernel/qeventloop.cpp:200 #88 0xb74fb3a8 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:851 #89 0xb684215e in QApplication::exec () at kernel/qapplication.cpp:3337 #90 0xb7f682f3 in kdemain (argc=1, argv=0xbf9ff094) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqmain.cpp:257 #91 0x080486f6 in main (argc=11084424, argv=0xb718b000) at /home/kde-devel/kde/build/KDE/kdebase/apps/konqueror/src/konqueror_dummy.cpp:3
Sorry, the OS is Linux not IRIX, of course ;-)
Created attachment 28122 [details] Suggested patch This patch fixes it for me.
Created attachment 28125 [details] Alternative (probably better) patch It's probably sufficient to clear the focus in ~RenderFormElement(), not in ~RenderWidget(). I would guess that this crash occurs only with form elements, so it's not necessary to have every RenderWidget check on destruction if it's got the focus.
looks fine to me, thanks! I prefer your version (1) though (it keeps widget related cleanups all at the same place and tests for null m_widget)
(In reply to comment #4) Actually, I thought of the null test just after I attached the second patch, this could easily be added to that patch as well ;-) Maybe it's really more elegant to have all the cleanup stuff in the same place. I just thought that it might be better not to add too much unneeded overhead to the destruction of every single widget.
not a matter of elegance, just easier for the maintening mind... besides I see no obvious reason this would be guarantedly specific to form widgets -> better safe than sorry. as for the overhead, any widget has an overhead many magnitudes higher than such a method (so it is negligible) If nothing of the above convinces you, then just commit the version you prefer because I certainly do not care *all* that much :)
(In reply to comment #6) I don't care all that much either, but you're right: making future maintenance easier is certainly a strong point for version 1 :-) > just commit the version you prefer I don't have an SVN account, so it would be nice if you could do that.
Yay, fantastic work Frank. Thank you! @Germain: bug #171179 looks like a dup of this one :)
SVN commit 885366 by ggarand: Apply patch by Frank Reininghaus <frank78ac googlemail com> : properly clear the focus on form widgets, to avoid crashing when changing the view profile. BUG: 173473 M +2 -0 render_replaced.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=885366
SVN commit 885374 by ggarand: automatically merged revision 885366: Apply patch by Frank Reininghaus <frank78ac googlemail com> : properly clear the focus on form widgets, to avoid crashing when changing the view profile. BUG: 173473 M +2 -0 render_replaced.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=885374
*** Bug 171179 has been marked as a duplicate of this bug. ***