Bug 374933 - Kcharselect crashes while entering text in field for search terms
Summary: Kcharselect crashes while entering text in field for search terms
Status: RESOLVED FIXED
Alias: None
Product: kcharselect
Classification: Applications
Component: general (show other bugs)
Version: 1.12
Platform: Ubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: Christoph Feck
URL:
Keywords:
: 362603 381443 385049 (view as bug list)
Depends on:
Blocks:
 
Reported: 2017-01-11 22:26 UTC by Sergio
Modified: 2017-09-25 23:54 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sergio 2017-01-11 22:26:57 UTC
You get

load glyph failed err=15 face=0x55e3eb230d40, glyph=711
Segmentation fault (core dumped)

To reproduce, just enter the world "double" in the search field.

Seen on Kubuntu Yakkety with the kubuntu backports ppa, namely plasma 5.8.5, framework 5.28.0, QT 5.6.1
Comment 1 Sergio 2017-01-11 22:31:07 UTC
Weirdly enough, if you type very slowly in the search box (e.g. one char every 3-4 sec), there is no crash.
Comment 2 Christoph Feck 2017-01-11 22:36:11 UTC
I cannot reproduce a crash.

If you can reproduce it, please add a backtrace. For more information, please see https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports
Comment 3 Sergio 2017-01-12 10:14:04 UTC
Just noticed that this might be a duplicate of 362603
Comment 4 Sergio 2017-01-12 10:18:30 UTC
Quick gdb gets:

Thread 1 "kcharselect" received signal SIGSEGV, Segmentation fault.
0x00007ffff6b05704 in QAbstractScrollArea::viewport() const () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5

I'll try to get more extended debug info as soon as I have possibility to do so...
Comment 5 Sergio 2017-01-12 22:38:42 UTC
I do not seem to be able to get the kde crash dialog. Any clue?
Comment 6 Sergio 2017-01-12 22:44:35 UTC
Is this what is needed?

Thread 1 (Thread 0x7ffff7e0bf00 (LWP 17960)):
#0  0x00007ffff6b05704 in QAbstractScrollArea::viewport (this=0x555556541d50) at widgets/qabstractscrollarea.cpp:631
#1  0x00007ffff6b84745 in QAccessibleTableCell::rect (this=0x55555651ebd0) at accessible/itemviews.cpp:1060
---Type <return> to continue, or q <return> to quit---
#2  0x00007ffff6b84c1a in QAccessibleTableCell::state (this=0x55555651ebd0) at accessible/itemviews.cpp:1024
#3  0x00007fffeaa06426 in AtSpiAdaptor::notify (this=0x555555b30070, event=<optimized out>) at linuxaccessibility/atspiadaptor.cpp:1060
#4  0x00007ffff6bd5b69 in QTableView::selectionChanged (this=0x5555558dc2a0, selected=..., deselected=...)
    at itemviews/qtableview.cpp:3343
#5  0x00007ffff6ba07f0 in QAbstractItemView::setSelectionModel (this=this@entry=0x5555558dc2a0, selectionModel=selectionModel@entry=
    0x555555c399e0) at itemviews/qabstractitemview.cpp:789
#6  0x00007ffff6bd4d0a in QTableView::setSelectionModel (this=0x5555558dc2a0, selectionModel=0x555555c399e0)
    at itemviews/qtableview.cpp:1187
#7  0x00007ffff7353f27 in KCharSelectTable::setContents (this=0x5555558dc2a0, chars=...) at ./src/kcharselect.cpp:200
#8  0x00007ffff73557c0 in KCharSelect::KCharSelectPrivate::_k_search (this=0x5555558161c0) at ./src/kcharselect.cpp:1006
#9  0x00007ffff7355a28 in KCharSelect::KCharSelectPrivate::_k_searchEditChanged (this=0x5555558161c0) at ./src/kcharselect.cpp:984
#10 0x00007ffff7359191 in KCharSelect::qt_static_metacall (_o=0x555555814f30, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>)
    at ./obj-x86_64-linux-gnu/src/moc_kcharselect.cpp:195
#11 0x00007ffff5d94b49 in QMetaObject::activate (sender=0x5555558137f0, signalOffset=<optimized out>, 
    local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fffffffcf70) at kernel/qobject.cpp:3730
#12 0x00007ffff5d950f7 in QMetaObject::activate (sender=<optimized out>, m=m@entry=0x7ffff6e3c8e0 <QLineEdit::staticMetaObject>, 
    local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fffffffcf70) at kernel/qobject.cpp:3595
#13 0x00007ffff6a8c4a2 in QLineEdit::textChanged (this=<optimized out>, _t1=...) at .moc/moc_qlineedit.cpp:416
#14 0x00007ffff6a92a09 in QLineEdit::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>)
    at .moc/moc_qlineedit.cpp:237
#15 0x00007ffff5d94b49 in QMetaObject::activate (sender=sender@entry=0x5555558174f0, signalOffset=<optimized out>, 
    local_signal_index=local_signal_index@entry=3, argv=argv@entry=0x7fffffffd0c0) at kernel/qobject.cpp:3730
#16 0x00007ffff5d950f7 in QMetaObject::activate (sender=sender@entry=0x5555558174f0, 
    m=m@entry=0x7ffff6e45260 <QWidgetLineControl::staticMetaObject>, local_signal_index=local_signal_index@entry=3, 
    argv=argv@entry=0x7fffffffd0c0) at kernel/qobject.cpp:3595
#17 0x00007ffff6b1b285 in QWidgetLineControl::textChanged (this=this@entry=0x5555558174f0, _t1=...)
    at .moc/moc_qwidgetlinecontrol_p.cpp:261
#18 0x00007ffff6b1ead6 in QWidgetLineControl::finishChange (this=this@entry=0x5555558174f0, validateFromState=8, 
    update=update@entry=false, edited=edited@entry=true) at widgets/qwidgetlinecontrol.cpp:713
#19 0x00007ffff6b208f2 in QWidgetLineControl::backspace (this=this@entry=0x5555558174f0) at widgets/qwidgetlinecontrol.cpp:228
#20 0x00007ffff6b21e3c in QWidgetLineControl::processKeyEvent (this=0x5555558174f0, event=event@entry=0x7fffffffd790)
    at widgets/qwidgetlinecontrol.cpp:1846
#21 0x00007ffff6a8c5fa in QLineEdit::keyPressEvent (this=0x5555558137f0, event=0x7fffffffd790) at widgets/qlineedit.cpp:1693
#22 0x00007ffff697cb97 in QWidget::event (this=this@entry=0x5555558137f0, event=event@entry=0x7fffffffd790) at kernel/qwidget.cpp:8781
#23 0x00007ffff6a92e19 in QLineEdit::event (this=0x5555558137f0, e=0x7fffffffd790) at widgets/qlineedit.cpp:1456
#24 0x00007ffff69368ac in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5555558137f0, e=0x7fffffffd790)
    at kernel/qapplication.cpp:3804
#25 0x00007ffff693d76e in QApplication::notify (this=<optimized out>, receiver=0x5555558137f0, e=0x7fffffffd790)
    at kernel/qapplication.cpp:3181
---Type <return> to continue, or q <return> to quit---
#26 0x00007ffff5d673b0 in QCoreApplication::notifyInternal2 (receiver=0x5555558137f0, event=0x7fffffffd790)
    at kernel/qcoreapplication.cpp:1015
#27 0x00007ffff69996eb in QWidgetWindow::event (this=0x5555558d8a90, event=0x7fffffffd790) at kernel/qwidgetwindow.cpp:226
#28 0x00007ffff69368ac in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5555558d8a90, e=0x7fffffffd790)
    at kernel/qapplication.cpp:3804
#29 0x00007ffff693bd4f in QApplication::notify (this=0x7fffffffdbd0, receiver=0x5555558d8a90, e=0x7fffffffd790)
    at kernel/qapplication.cpp:3561
#30 0x00007ffff5d673b0 in QCoreApplication::notifyInternal2 (receiver=receiver@entry=0x5555558d8a90, event=event@entry=0x7fffffffd790)
    at kernel/qcoreapplication.cpp:1015
#31 0x00007ffff634ac28 in QCoreApplication::sendSpontaneousEvent (event=0x7fffffffd790, receiver=0x5555558d8a90)
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:228
#32 QGuiApplicationPrivate::processKeyEvent (e=0x5555565364f0) at kernel/qguiapplication.cpp:1984
#33 0x00007ffff634fde5 in QGuiApplicationPrivate::processWindowSystemEvent (e=e@entry=0x5555565364f0) at kernel/qguiapplication.cpp:1662
#34 0x00007ffff632db2b in QWindowSystemInterface::sendWindowSystemEvents (flags=...) at kernel/qwindowsysteminterface.cpp:648
#35 0x00007fffea9e9660 in userEventSourceDispatch (source=<optimized out>) at eventdispatchers/qeventdispatcher_glib.cpp:70
#36 0x00007ffff339f7d7 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#37 0x00007ffff339fa40 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#38 0x00007ffff339faec in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#39 0x00007ffff5dbd48f in QEventDispatcherGlib::processEvents (this=0x5555557c4ba0, flags=...) at kernel/qeventdispatcher_glib.cpp:417
#40 0x00007ffff5d650fa in QEventLoop::exec (this=this@entry=0x7fffffffda90, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#41 0x00007ffff5d6d90c in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1285
#42 0x000055555555a962 in main (argc=<optimized out>, argv=<optimized out>) at ./main.cc:74
Comment 7 Christoph Feck 2017-01-13 00:31:15 UTC
The backtrace is useful, thanks.

This crash is caused by a bug in Qt's accessibility support, that's why I do not see it (only Ubuntu uses Qt's AT-SPI accessibility integration, as far as I know).

Since you can reproduce it with Qt 5.6.1, I suggest to also report this issue directly to Qt developers via https://bugreports.qt.io/
Comment 8 Christoph Feck 2017-01-13 00:39:39 UTC
Regarding comment #3, I have yet to understand how to decipher the attachments, but the steps to reproduce are indeed similar.

Regarding comment #5, see bug 374984.
Comment 9 Sergio 2017-01-13 09:12:31 UTC
Thanks for the quick answer.

- I have confirmed the issue about the crash dialog issue, adding a note about the distro where I see it, so I'll be able to link it in the ubuntu tracker too, to assure that when a fix comes kubuntu picks it up soon.

- Is the AT-SPI accessibility integration something that ubuntu compiles in or something configurable at runtime, so I can temporarily disable it?
Comment 10 Frederik Gladhorn 2017-01-16 13:52:52 UTC
https://bugreports.qt.io/browse/QTBUG-58153
Comment 11 Sergio 2017-06-19 14:47:36 UTC
Still seen on kubuntu 17.04 which relies on qt 5.7.1.
Comment 12 Sergio 2017-06-19 14:50:36 UTC
However, in this case, I was seeing the bug having no qt-at-spi installed. Actually, installing it seems to have solved the problem.
Comment 13 Christoph Feck 2017-06-20 14:48:54 UTC
*** Bug 362603 has been marked as a duplicate of this bug. ***
Comment 14 Christoph Feck 2017-06-20 14:49:32 UTC
*** Bug 381443 has been marked as a duplicate of this bug. ***
Comment 15 Harald Sitter 2017-07-18 09:33:34 UTC
Git commit ca40063c4e4936d02c8a9cec0c45ecb643ffd5be by Harald Sitter.
Committed on 18/07/2017 at 09:32.
Pushed by sitter into branch 'master'.

do not crash qaccessible by causing a resize in a resize event

Summary:
When enabling accessibility qaccessible will automatically add a11y support
constructs to core qt types such as qtableview.
Unfortunately for qtableview specifically a change of the layout/size will
discard the accessible objects modeling the individual cells in our table.
Combined with the way we control layout through the model [I am not sure
why we do this to begin with] this can result in call chains where
qaccessible triggers a resizeEvent which we'll handle by rejiggering
our model to get a new layout, resulting in qaccessible deleting the
object which originally caused the event and ending in a segfault.

To prevent this problem we delay the rejiggering of our model by running
the call through the eventloop (i.e. the resize is executed once the stack
unwinds again to the event loop).

CHANGELOG: Fixed a crash when searching with accessibility support enabled

Also see https://bugreports.qt.io/browse/QTBUG-58153

Test Plan: spent a good while searching and copy pasting and all that fun stuff. no more crashing.

Reviewers: gladhorn, cfeck

Reviewed By: cfeck

Subscribers: cfeck, anthonyfieroni, #frameworks

Tags: #frameworks

Differential Revision: https://phabricator.kde.org/D6624

M  +17   -1    src/kcharselect.cpp

https://commits.kde.org/kwidgetsaddons/ca40063c4e4936d02c8a9cec0c45ecb643ffd5be
Comment 16 Christoph Feck 2017-09-25 23:54:37 UTC
*** Bug 385049 has been marked as a duplicate of this bug. ***