Bug 281375

Summary: konsole crashes after pressing Ctrl+A in the 'Config Profiles' dialog.
Product: [Applications] konsole Reporter: Jekyll Wu <adaptee>
Component: generalAssignee: Konsole Developer <konsole-devel>
Status: RESOLVED FIXED    
Severity: crash    
Priority: NOR    
Version: 2.7.999   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In: 4.8
Sentry Crash Report:

Description Jekyll Wu 2011-09-05 11:22:58 UTC
Version:           2.7.999 (using KDE 4.7.0) 
OS:                Linux

As indicated by the backtrace, the real problem is ManageProfilesDialog::tableSelectionChanged() cause itself get invoked infinitely after pressing Ctrl+A. 

A quick fix is removing the last line within ManageProfilesDialog::tableSelectionChanged():

    _ui->sessionTable->selectRow(rowIndex);

, but maybe that is not the right fix.




Reproducible: Always

Steps to Reproduce:
1). open the 'Config Profiles' dialog
2). press Ctrl+A

Actual Results:  
konsole crashed

Expected Results:  
All profiles are selected, or nothing happens.At least konsole should not crash.

top of the backtrace:

#0  0xb73f5222 in ?? () from /usr/lib/libQtCore.so.4
#1  0xb73f528b in QListData::detach_grow(int*, int) () from /usr/lib/libQtCore.so.4
#2  0xb6fb18ff in ?? () from /usr/lib/libQtGui.so.4
#3  0xb6fb1c77 in ?? () from /usr/lib/libQtGui.so.4
#4  0xb7001a00 in QItemSelection::select(QModelIndex const&, QModelIndex const&) () from /usr/lib/libQtGui.so.4
#5  0xb7001be0 in QItemSelection::QItemSelection(QModelIndex const&, QModelIndex const&) () from /usr/lib/libQtGui.so.4
#6  0xb7006a46 in ?? () from /usr/lib/libQtGui.so.4
#7  0xb7006e43 in QItemSelectionModel::select(QItemSelection const&, QFlags<QItemSelectionModel::SelectionFlag>) ()
   from /usr/lib/libQtGui.so.4
#8  0xb6fd89cc in ?? () from /usr/lib/libQtGui.so.4
#9  0xb6fd8b92 in QTableView::selectRow(int) () from /usr/lib/libQtGui.so.4
#10 0xb7da18eb in Konsole::ManageProfilesDialog::tableSelectionChanged (this=0x847d260)
    at /mnt/personal/code/@abs/konsole/src/konsole-build/src/ManageProfilesDialog.cpp:309
#11 0xb7da3143 in Konsole::ManageProfilesDialog::qt_metacall (this=0x847d260, _c=QMetaObject::InvokeMetaMethod, 
    _id=<optimized out>, _a=0xbf800594) at /mnt/personal/code/@abs/konsole/src/konsole-build/src/ManageProfilesDialog.moc:100
#12 0xb74d5eed in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4
#13 0xb74e4dda in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#14 0xb6fffd1d in QItemSelectionModel::selectionChanged(QItemSelection const&, QItemSelection const&) ()
   from /usr/lib/libQtGui.so.4
#15 0xb7005962 in QItemSelectionModel::emitSelectionChanged(QItemSelection const&, QItemSelection const&) ()
   from /usr/lib/libQtGui.so.4
#16 0xb7006f24 in QItemSelectionModel::select(QItemSelection const&, QFlags<QItemSelectionModel::SelectionFlag>) ()
   from /usr/lib/libQtGui.so.4
#17 0xb6fd89cc in ?? () from /usr/lib/libQtGui.so.4
#18 0xb6fd8b92 in QTableView::selectRow(int) () from /usr/lib/libQtGui.so.4
#19 0xb7da18eb in Konsole::ManageProfilesDialog::tableSelectionChanged (this=0x847d260)
    at /mnt/personal/code/@abs/konsole/src/konsole-build/src/ManageProfilesDialog.cpp:309
#20 0xb7da3143 in Konsole::ManageProfilesDialog::qt_metacall (this=0x847d260, _c=QMetaObject::InvokeMetaMethod, 
    _id=<optimized out>, _a=0xbf800914) at /mnt/personal/code/@abs/konsole/src/konsole-build/src/ManageProfilesDialog.moc:100
#21 0xb74d5eed in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4
#22 0xb74e4dda in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#23 0xb6fffd1d in QItemSelectionModel::selectionChanged(QItemSelection const&, QItemSelection const&) ()
   from /usr/lib/libQtGui.so.4
#24 0xb7005962 in QItemSelectionModel::emitSelectionChanged(QItemSelection const&, QItemSelection const&) ()
   from /usr/lib/libQtGui.so.4
#25 0xb7006f24 in QItemSelectionModel::select(QItemSelection const&, QFlags<QItemSelectionModel::SelectionFlag>) ()
   from /usr/lib/libQtGui.so.4
#26 0xb6fd89cc in ?? () from /usr/lib/libQtGui.so.4
#27 0xb6fd8b92 in QTableView::selectRow(int) () from /usr/lib/libQtGui.so.4
#28 0xb7da18eb in Konsole::ManageProfilesDialog::tableSelectionChanged (this=0x847d260)
    at /mnt/personal/code/@abs/konsole/src/konsole-build/src/ManageProfilesDialog.cpp:309
#29 0xb7da3143 in Konsole::ManageProfilesDialog::qt_metacall (this=0x847d260, _c=QMetaObject::InvokeMetaMethod, 
    _id=<optimized out>, _a=0xbf800c94) at /mnt/personal/code/@abs/konsole/src/konsole-build/src/ManageProfilesDialog.moc:100
#30 0xb74d5eed in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4
#31 0xb74e4dda in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#32 0xb6fffd1d in QItemSelectionModel::selectionChanged(QItemSelection const&, QItemSelection const&) ()
   from /usr/lib/libQtGui.so.4
#33 0xb7005962 in QItemSelectionModel::emitSelectionChanged(QItemSelection const&, QItemSelection const&) ()
   from /usr/lib/libQtGui.so.4
#34 0xb7006f24 in QItemSelectionModel::select(QItemSelection const&, QFlags<QItemSelectionModel::SelectionFlag>) ()
   from /usr/lib/libQtGui.so.4
#35 0xb6fd89cc in ?? () from /usr/lib/libQtGui.so.4
Comment 1 Jekyll Wu 2011-09-06 08:39:08 UTC
Git commit e83bc55fa4f19218955c7f28161dfefd40ab692a by Jekyll Wu.
Committed on 06/09/2011 at 10:25.
Pushed by jekyllwu into branch 'master'.

Do not call selectedRow() at the end of tableSelectionChanged().

That line will cause infinite growing stack when Ctrl+A is pressed and
finally make konsole crash .

BUG: 281375
FIXED-IN: 4.8

M  +0    -1    src/ManageProfilesDialog.cpp

http://commits.kde.org/konsole/e83bc55fa4f19218955c7f28161dfefd40ab692a
Comment 2 Kurt Hindenburg 2011-09-15 15:42:23 UTC
Git commit 0263433e57f8a2ccea11736ae90d418cbeafba89 by Kurt Hindenburg, on behalf of Jekyll Wu.
Committed on 06/09/2011 at 10:25.
Pushed by hindenburg into branch 'KDE/4.7'.

Do not call selectedRow() at the end of tableSelectionChanged().

That line will cause infinite growing stack when Ctrl+A is pressed and
finally make konsole crash .

BUG: 281375
FIXED-IN: 4.8
(cherry picked from commit e83bc55fa4f19218955c7f28161dfefd40ab692a)

M  +0    -1    src/ManageProfilesDialog.cpp

http://commits.kde.org/konsole/0263433e57f8a2ccea11736ae90d418cbeafba89