Bug 395181

Summary: Crash in KCharSelect [assert "index out of range"]
Product: [Frameworks and Libraries] frameworks-kwidgetsaddons Reporter: Edward Kigwana <ekigwana>
Component: generalAssignee: David Faure <faure>
Status: RESOLVED UPSTREAM    
Severity: crash CC: faure, kdelibs-bugs, t.schmittlauch
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Gentoo Packages   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Edward Kigwana 2018-06-09 16:55:44 UTC
Version: git head, qt-5.11.0_rc2

Looks like something changed in kwidgetaddons that is causing this crash.

designer output with plugin removed:
------------------------------------
mkdir -p /home/ekigwana/.local/share/akonadi/db_data

QObject::connect: Connecting from QTabBar::tabCloseRequested(int) to COMPAT slot (KTabBar::closeRequest(int))
Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
Error while reparenting!
Designer: A class name mismatch occurred when creating a widget using the custom widget factory registered for widgets of class KDialog. It returned a widget of class QDialog.
QObject::connect: Connecting from QTabBar::tabCloseRequested(int) to COMPAT slot (KTabBar::closeRequest(int))
QMetaProperty::read: Unable to handle unregistered datatype 'SelectionBehavior' for property 'QTabBar::selectionBehaviorOnRemove'
/usr/bin/mysqlcheck: Got error: 1049: Unknown database 'akonadi' when selecting the database
Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
org.kde.pim.kidentitymanagement: IdentityManager: There was no default identity. Marking first one as default.
org.kde.pim.kidentitymanagement: IdentityManager: There was no default identity. Marking first one as default.
org.kde.pim.kidentitymanagement: IdentityManager: There was no default identity. Marking first one as default.
org.kde.pim.maildirresource: the resource is not properly configured: there is no config file for the resource. We create a new one.
QObject::killTimer: Timers cannot be stopped from another thread
QXcbConnection: XCB error: 3 (BadWindow), sequence: 1163, resource id: 39910544, major code: 40 (TranslateCoords), minor code: 0
"No file selected."
org.kde.pim.maildirresource: the resource is not properly configured: there is no config file for the resource. We create a new one.
QObject::killTimer: Timers cannot be stopped from another thread
QIODevice::read (QLocalSocket): device not open

designer out put on crash:
--------------------------
Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
QObject::connect: Connecting from QTabBar::tabCloseRequested(int) to COMPAT slot (KTabBar::closeRequest(int))
Error while reparenting!
Designer: A class name mismatch occurred when creating a widget using the custom widget factory registered for widgets of class KDialog. It returned a widget of class QDialog.
QObject::connect: Connecting from QTabBar::tabCloseRequested(int) to COMPAT slot (KTabBar::closeRequest(int))
QMetaProperty::read: Unable to handle unregistered datatype 'SelectionBehavior' for property 'QTabBar::selectionBehaviorOnRemove'
[New Thread 0x7fff52d73700 (LWP 14623)]
ASSERT failure in QVector<T>::operator[]: "index out of range", file ../../include/QtCore/../../src/corelib/tools/qvector.h, line 436

Thread 1 "designer" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51      }
(gdb) 
(gdb) org.kde.pim.akonadiserver: database server stopped unexpectedly
org.kde.pim.akonadiserver: Database process exited unexpectedly during initial connection!
org.kde.pim.akonadiserver: executable: "/usr/sbin/mysqld"
org.kde.pim.akonadiserver: arguments: ("--defaults-file=/home/ekigwana/.local/share/akonadi/mysql.conf", "--datadir=/home/ekigwana/.local/share/akonadi/db_data/", "--socket=/tmp/akonadi-ekigwana.G1aOxT/mysql.socket", "--pid-file=/tmp/akonadi-ekigwana.G1aOxT/mysql.pid")
org.kde.pim.akonadiserver: stdout: ""
org.kde.pim.akonadiserver: stderr: "2018-06-09 15:27:13 0 [Note] /usr/sbin/mysqld (mysqld 10.3.7-MariaDB) starting as process 14607 ...\n2018-06-09 15:27:13 0 [Warning] Can't create test file /home/ekigwana/.local/share/akonadi/db_data/i7-tower.lower-test\n\x07/usr/sbin/mysqld: Can't change dir to '/home/ekigwana/.local/share/akonadi/db_data/' (Errcode: 2 \"No such file or directory\")\n2018-06-09 15:27:13 0 [ERROR] Aborting\n\n"
org.kde.pim.akonadiserver: exit code: 1
org.kde.pim.akonadiserver: process error: "Unknown error"
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/tmp/akonadi-ekigwana.G1aOxT/mysql.socket' (2)'
Check that mysqld is running and that the socket: '/tmp/akonadi-ekigwana.G1aOxT/mysql.socket' exists!
org.kde.pim.akonadiserver: Failed to remove runtime connection config file
org.kde.pim.akonadicontrol: Application 'akonadiserver' exited normally...

(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff4adcf61 in __GI_abort () at abort.c:79
#2  0x00007ffff52f7481 in qt_message_fatal (context=..., message=<synthetic pointer>...) at global/qlogging.cpp:1839
#3  QMessageLogger::fatal (this=this@entry=0x7fffffffce00, msg=msg@entry=0x7ffff559b818 "ASSERT failure in %s: \"%s\", file %s, line %d") at global/qlogging.cpp:877
#4  0x00007ffff52f6c76 in qt_assert_x (where=where@entry=0x7ffff6bc95bc "QVector<T>::operator[]", what=what@entry=0x7ffff6bc5ed7 "index out of range", 
    file=file@entry=0x7ffff6bc6350 "../../include/QtCore/../../src/corelib/tools/qvector.h", line=line@entry=436) at global/qglobal.cpp:3188
#5  0x00007ffff6aa41ef in QVector<QHeaderViewPrivate::SectionItem>::operator[] (this=<optimized out>, i=7) at ../../include/QtCore/../../src/corelib/tools/qvector.h:436
#6  0x00007ffff6a9d0f5 in QHeaderViewPrivate::_q_sectionsChanged (this=0x55555698efe0, hint=<optimized out>) at itemviews/qheaderview.cpp:2287
#7  0x00007ffff6a9f70c in QHeaderView::qt_static_metacall (_o=0x55555698efa0, _c=<optimized out>, _id=<optimized out>, _a=0x7fffffffcff0) at .moc/moc_qheaderview.cpp:265
#8  0x00007ffff5502fae in QMetaObject::activate (sender=sender@entry=0x5555569a5340, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=3, argv=argv@entry=0x7fffffffcff0) at kernel/qobject.cpp:3771
#9  0x00007ffff5503367 in QMetaObject::activate (sender=sender@entry=0x5555569a5340, m=m@entry=0x7ffff59675c0 <QAbstractItemModel::staticMetaObject>, local_signal_index=local_signal_index@entry=3, argv=argv@entry=0x7fffffffcff0)
    at kernel/qobject.cpp:3633
#10 0x00007ffff5483516 in QAbstractItemModel::layoutChanged (this=this@entry=0x5555569a5340, _t1=..., _t2=<optimized out>, _t2@entry=QAbstractItemModel::NoLayoutChangeHint) at .moc/moc_qabstractitemmodel.cpp:567
#11 0x00007fffe2887cf5 in KCharSelectItemModel::setColumnCount (this=this@entry=0x5555569a5340, columns=columns@entry=7) at /var/tmp/portage/kde-frameworks/kwidgetsaddons-9999/work/kwidgetsaddons-9999/src/kcharselect.cpp:1132
#12 0x00007fffe2887fd0 in KCharSelectItemModel::setColumnCount (columns=<optimized out>, this=0x5555569a5340) at /var/tmp/portage/kde-frameworks/kwidgetsaddons-9999/work/kwidgetsaddons-9999/src/kcharselect.cpp:1127
#13 KCharSelectTablePrivate::_k_resizeCells (this=0x555556994590) at /var/tmp/portage/kde-frameworks/kwidgetsaddons-9999/work/kwidgetsaddons-9999/src/kcharselect.cpp:289
#14 0x00007fffe2888579 in KCharSelectTable::setContents (this=0x5555569848a0, chars=...) at /var/tmp/portage/kde-frameworks/kwidgetsaddons-9999/work/kwidgetsaddons-9999/src/kcharselect.cpp:204
#15 0x00007fffe2888705 in KCharSelect::KCharSelectPrivate::_k_blockSelected (this=0x55555696c880, index=index@entry=0) at /var/tmp/portage/kde-frameworks/kwidgetsaddons-9999/work/kwidgetsaddons-9999/src/kcharselect.cpp:993
#16 0x00007fffe2889d30 in KCharSelect::KCharSelectPrivate::_k_blockSelected (index=0, this=<optimized out>) at /var/tmp/portage/kde-frameworks/kwidgetsaddons-9999/work/kwidgetsaddons-9999/src/kcharselect.cpp:986
#17 KCharSelect::initWidget (this=0x55555696d410, controls=..., actionParent=0x0) at /var/tmp/portage/kde-frameworks/kwidgetsaddons-9999/work/kwidgetsaddons-9999/src/kcharselect.cpp:553
#18 0x00007fff7c09ef28 in non-virtual thunk to KCharSelectPlugin::createWidget(QWidget*) () from /usr/lib64/qt5/plugins/designer/kf5widgets.so
#19 0x00007ffff738b0b8 in qdesigner_internal::WidgetFactory::createCustomWidget (this=this@entry=0x555555b76640, className=..., parentWidget=parentWidget@entry=0x0, creationError=creationError@entry=0x7fffffffd3bf)
    at shared/widgetfactory.cpp:265
#20 0x00007ffff738b96d in qdesigner_internal::WidgetFactory::createWidget (this=0x555555b76640, widgetName=..., parentWidget=0x0) at shared/widgetfactory.cpp:328
#21 0x00007ffff7394d5e in qdesigner_internal::WidgetDataBase::defaultPropertyValues (this=this@entry=0x555555ace570, name=...) at shared/widgetdatabase.cpp:431
#22 0x00007ffff7394f6f in qdesigner_internal::WidgetDataBase::grabDefaultPropertyValues (this=0x555555ace570) at shared/widgetdatabase.cpp:453
#23 0x000055555558e48f in QDesignerWorkbench::QDesignerWorkbench (this=0x555555ad5240) at qdesigner_workbench.cpp:180
#24 0x0000555555587219 in QDesigner::parseCommandLineArguments (this=0x7fffffffd860) at qdesigner.cpp:251
#25 0x0000555555574da4 in main (argc=<optimized out>, argv=<optimized out>) at main.cpp:48
Comment 1 Christoph Feck 2018-06-22 11:44:03 UTC
*** Bug 395742 has been marked as a duplicate of this bug. ***
Comment 2 David Faure 2019-04-13 13:24:17 UTC
Yep, very annoying bug, crashing designer (or qtcreator) whenever I open a ui file. Amazing that not more people have it this ;)
Debugging it now.
Comment 3 David Faure 2019-04-13 13:24:28 UTC
have it -> have hit
Comment 4 David Faure 2019-04-13 17:50:10 UTC
Turns out to be a bug in QHeaderView.
https://codereview.qt-project.org/258967
Comment 5 Christoph Feck 2019-05-11 08:16:10 UTC
Fix accepted upstream. Thanks, David!