On the crash with the sidebar's "Hide config button" entry...
Maks Orlovich
mo002j at mail.rochester.edu
Thu Feb 27 03:36:17 GMT 2003
Hi..
Currently, Konqueror crashes if you click on the Wrench icon in the sidebar,
and uncheck the "Show Configuration Button" entry. This occurs because a
deleteLater request to remove the button gets handled in the inner event loop
for the popup menu, deleting the button that initiated the .exec() on the
menu while its member function is still executing (See the valgrind output
below for more details). It's possible to workaround this (attached); but the
patch is extraordinarily ugly and hacky, and I don't see a better way.
I think the better option would be to just kill this menu entry, at least when
invoked from the wrench button. If this is agreed to, I'll make a patch to do
this. This arguably one piece of configurability that we don't need.
At any rate, IMHO, crashing on invocation of a menu entry, no matter how
obscure, during regular use, is unacceptible and hence I'd suggest that this
bug is a showstopper for 3.1.1
---------------------
==8567==
==8567== Invalid read of size 4
==8567== at 0x40D7C6CF: QPushButton::popupPressed() (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40F5615B: QPushButton::qt_invoke(int, QUObject*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x491214E0: KMultiTabBarButton::qt_invoke(int, QUObject*) (in
/code/opt/kde3/lib/libkmultitabbar.so.0.0.0)
==8567== by 0x40C88608: QObject::activate_signal(QConnectionList*,
QUObject*) (in /usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40C884AC: QObject::activate_signal(int) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40F472CA: QButton::pressed() (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40D0A9B7: QButton::mousePressEvent(QMouseEvent*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40CBC6EA: QWidget::event(QEvent*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40C28C73: QApplication::internalNotify(QObject*, QEvent*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40C284A2: QApplication::notify(QObject*, QEvent*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x408BE54D: KApplication::notify(QObject*, QEvent*) (in
/code/opt/kde3/lib/libkdecore.so.4.2.0)
==8567== by 0x40BCEB67: QETWidget::translateMouseEvent(_XEvent const*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40BCC6AE: QApplication::x11ProcessEvent(_XEvent*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40BE1769: QEventLoop::processEvents(unsigned) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40C3E595: QEventLoop::enterLoop() (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40C3E437: QEventLoop::exec() (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40C28EA0: QApplication::exec() (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x4023E664: main (in /code/opt/kde3/lib/konqueror.so)
==8567== by 0x412AF796: __libc_start_main (in /lib/i686/libc-2.3.1.so)
==8567== by 0x8048510: (within /code/opt/kde3/bin/konqueror)
==8567== Address 0x43DCB64C is 0 bytes inside a block of size 152 free'd
==8567== at 0x4015D8C8: __builtin_delete (vg_clientfuncs.c:196)
==8567== by 0x4015D8E8: operator delete(void*) (vg_clientfuncs.c:205)
==8567== by 0x49124638: KMultiTabBarButton::~KMultiTabBarButton() (in
/code/opt/kde3/lib/libkmultitabbar.so.0.0.0)
==8567== by 0x40C86242: QObject::event(QEvent*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40CBC67B: QWidget::event(QEvent*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40C28C73: QApplication::internalNotify(QObject*, QEvent*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40C28868: QApplication::notify(QObject*, QEvent*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x408BE54D: KApplication::notify(QObject*, QEvent*) (in
/code/opt/kde3/lib/libkdecore.so.4.2.0)
==8567== by 0x40C29A09: QApplication::sendPostedEvents(QObject*, int) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40C29887: QApplication::sendPostedEvents() (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40BE110D: QEventLoop::processEvents(unsigned) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40C3E595: QEventLoop::enterLoop() (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40C28F00: QApplication::enter_loop() (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40D78C25: QPopupMenu::exec(QPoint const&, int) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40D7C6CB: QPushButton::popupPressed() (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40F5615B: QPushButton::qt_invoke(int, QUObject*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x491214E0: KMultiTabBarButton::qt_invoke(int, QUObject*) (in
/code/opt/kde3/lib/libkmultitabbar.so.0.0.0)
==8567== by 0x40C88608: QObject::activate_signal(QConnectionList*,
QUObject*) (in /usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40C884AC: QObject::activate_signal(int) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40F472CA: QButton::pressed() (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40D0A9B7: QButton::mousePressEvent(QMouseEvent*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40CBC6EA: QWidget::event(QEvent*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40C28C73: QApplication::internalNotify(QObject*, QEvent*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40C284A2: QApplication::notify(QObject*, QEvent*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x408BE54D: KApplication::notify(QObject*, QEvent*) (in
/code/opt/kde3/lib/libkdecore.so.4.2.0)
==8567== by 0x40BCEB67: QETWidget::translateMouseEvent(_XEvent const*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40BCC6AE: QApplication::x11ProcessEvent(_XEvent*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40BE1769: QEventLoop::processEvents(unsigned) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40C3E595: QEventLoop::enterLoop() (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40C3E437: QEventLoop::exec() (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x40C28EA0: QApplication::exec() (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x4023E664: main (in /code/opt/kde3/lib/konqueror.so)
==8567==
==8567== Jump to the invalid address stated on the next line
==8567== at 0x2: ???
==8567== by 0x40F5615B: QPushButton::qt_invoke(int, QUObject*) (in
/usr/lib/qt3/lib/libqt-mt.so.3.1.1)
==8567== by 0x491214E0: KMultiTabBarButton::qt_invoke(int, QUObject*) (in
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dont_crash.diff
Type: text/x-diff
Size: 2304 bytes
Desc: not available
URL: <https://mail.kde.org/mailman/private/kfm-devel/attachments/20030226/a1371e75/attachment.diff>
More information about the kfm-devel
mailing list