[Konsole-devel] [Bug 246652] Closing the shell via CTRL+D crashes
David Faure
faure at kde.org
Tue Nov 16 00:29:22 UTC 2010
https://bugs.kde.org/show_bug.cgi?id=246652
--- Comment #71 from David Faure <faure kde org> 2010-11-16 01:29:18 ---
Gökcen: your vg log doesn't have my #54 fix, so it had a lot of noise (the lack
--nofork didn't help either), and not enough debug symbols everywhere.
But thanks to #69 I could finally reproduce this bug. Valgrind says:
==20013== by 0x6D9CFA1: QWidget::d_func() (qwidget.h:143)
==20013== by 0x6DF39F7: QWidget::removeAction(QAction*) (qwidget.cpp:3162)
==20013== by 0x6571836: KActionCollection::removeAssociatedWidget(QWidget*)
(kactioncollection.cpp:723)
==20013== by 0x67B3E6B: KXMLGUIClient::prepareXMLUnplug(QWidget*)
(kxmlguiclient.cpp:726)
==20013== by 0x67B6D69: KXMLGUIFactory::removeClient(KXMLGUIClient*)
(kxmlguifactory.cpp:453)
==20013== by 0x67B0CB8: KXMLGUIClient::~KXMLGUIClient()
(kxmlguiclient.cpp:100)
==20013== by 0x1730FF50: Konsole::SessionController::~SessionController()
(SessionController.cpp:176)
==20013== by 0x1730FF97: Konsole::SessionController::~SessionController()
(SessionController.cpp:182)
==20013== Address 0xf7ad878 is 8 bytes inside a block of size 912 free'd
==20013== at 0x4C25108: operator delete(void*) (vg_replace_malloc.c:387)
==20013== by 0x1732930D: Konsole::TerminalDisplay::~TerminalDisplay()
(TerminalDisplay.cpp:391)
[...]
and now I understand what's happening. Indeed the regression comes from the
patch r1145720 for bug 170806, because removeClient() on the guiFactory unplugs
actions, i.e. tries to access a widget that doesn't exist anymore
(TerminalDisplay).
This tells me that the destruction order is a bit strange in konsole then (when
the guiFactory got autocreated in showDisplayContextMenu), but ok, I'll have a
look at fixing this in kdeui to restore former behavior.
We only wanted to make the factory forget about the client, not to unplug
actions one by one (which sounds slow, too).
--
Configure bugmail: https://bugs.kde.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the konsole-devel
mailing list