[Konsole-devel] Review Request 118839: Fix crash on close

Aurélien Gâteau agateau at kde.org
Fri Jun 20 12:04:50 UTC 2014


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/118839/
-----------------------------------------------------------

(Updated June 20, 2014, 12:04 p.m.)


Status
------

This change has been marked as submitted.


Review request for Konsole.


Bugs: 331724
    http://bugs.kde.org/show_bug.cgi?id=331724


Repository: konsole


Description
-------

Move code responsible for 'forgetting' a view outside of code responding to the
TerminalDisplay deletion.

This avoids a loop like this:

~MainWindow
=> ~QStackedWidget
=> ~TerminalDisplay
=> QObject::destroyed
=> ViewContainer::viewDestroyed
=> ViewContainer::removeViewWidget
   - internal cleanup
   - try to remove TerminalDisplay from QStackedWidget which is being deleted and
crash

Instead the code now does:

~MainWindow
=> ~QStackedWidget
=> ~TerminalDisplay
=> QObject::destroyed
=> ViewContainer::viewDestroyed
=> ViewContainer::forgetView (does the internal clean up)

And if one tries to explicitly remove a view, sequence is:

ViewContainer::removeView
=> ViewContainer::forgetView
=> ViewContainer::removeViewWidget

The patch also removes ViewManager::focusActiveView() because it causes a crash
when closing a TerminalDisplay as it tries to put the focus on the deleted
TerminalDisplay. I initially called it through a queued connection, but realized
it is actually not needed for focus to be passed to the correct view, so just
removed it.


Diffs
-----

  src/ViewContainer.h 60d2bd9 
  src/ViewContainer.cpp 79c24d5 
  src/ViewManager.h 047b7ee 
  src/ViewManager.cpp 75473e9 
  src/ViewSplitter.cpp bfc727e 

Diff: https://git.reviewboard.kde.org/r/118839/diff/


Testing
-------

Started and closed Konsole, created and deleted tabs, created and deleted split views. No crash.


Thanks,

Aurélien Gâteau

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/konsole-devel/attachments/20140620/01e67849/attachment.html>


More information about the konsole-devel mailing list