Bug 385286

Summary: Konsole segfault
Product: [Applications] konsole Reporter: Samantha McVey <samantham>
Component: generalAssignee: Konsole Developer <konsole-devel>
Status: RESOLVED WORKSFORME    
Severity: crash CC: samantham, simonandric5
Priority: NOR Keywords: drkonqi
Version: 17.08.1   
Target Milestone: ---   
Platform: Gentoo Packages   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: attachment-449-0.html
New crash information added by DrKonqi

Description Samantha McVey 2017-10-02 06:30:28 UTC
Application: konsole (17.08.1)

Qt Version: 5.7.1
Frameworks Version: 5.38.0
Operating System: Linux 4.12.0-sabayon x86_64
Distribution: "Sabayon Linux amd64 17.10"

-- Information about the crash:
- What I was doing when the application crashed:
 perl -C -E'say "\x{1F3F4}\x{E0067}\x{E0062}\x{E0065}\x{E006E}\x{E0067}\x{E007F}"'

It is reproducible every time for me. See https://emojipedia.org/flag-for-england/

The font I have set is Fantasque Sans, though I don't know if that matters. The perl command above prints out the 'England' flag. It is a new emoji and it's causing Konsole to crash every time it was seen. Either printing it out with perl or by using less on the UCD (Unicode emoji data files).

The crash can be reproduced every time.

-- Backtrace:
Application: Konsole (konsole), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f27fd90d840 (LWP 13401))]

Thread 3 (Thread 0x7f27e0f35700 (LWP 13403)):
#0  0x00007f27fd3bf1fd in read () from /lib64/libc.so.6
#1  0x00007f27f4d99570 in g_wakeup_acknowledge () from /usr/lib64/libglib-2.0.so.0
#2  0x00007f27f4d56572 in g_main_context_check () from /usr/lib64/libglib-2.0.so.0
#3  0x00007f27f4d56a48 in g_main_context_iterate.isra () from /usr/lib64/libglib-2.0.so.0
#4  0x00007f27f4d56bac in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#5  0x00007f27fa08cb1c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#6  0x00007f27fa04389a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#7  0x00007f27f9eb696c in QThread::exec() () from /usr/lib64/libQt5Core.so.5
#8  0x00007f27fd98a395 in QDBusConnectionManager::run() () from /usr/lib64/libQt5DBus.so.5
#9  0x00007f27f9ebac1d in QThreadPrivate::start(void*) () from /usr/lib64/libQt5Core.so.5
#10 0x00007f27f6a2165c in start_thread () from /lib64/libpthread.so.0
#11 0x00007f27fd3cd4fd in clone () from /lib64/libc.so.6

Thread 2 (Thread 0x7f27e2c2a700 (LWP 13402)):
#0  0x00007f27fd3c367d in poll () from /lib64/libc.so.6
#1  0x00007f27f6e46852 in _xcb_conn_wait () from /usr/lib64/libxcb.so.1
#2  0x00007f27f6e4853f in xcb_wait_for_event () from /usr/lib64/libxcb.so.1
#3  0x00007f27e495dce9 in QXcbEventReader::run() () from /usr/lib64/libQt5XcbQpa.so.5
#4  0x00007f27f9ebac1d in QThreadPrivate::start(void*) () from /usr/lib64/libQt5Core.so.5
#5  0x00007f27f6a2165c in start_thread () from /lib64/libpthread.so.0
#6  0x00007f27fd3cd4fd in clone () from /lib64/libc.so.6

Thread 1 (Thread 0x7f27fd90d840 (LWP 13401)):
[KCrash Handler]
#6  0x00007f27fa81bf03 in QRegion::~QRegion() () from /usr/lib64/libQt5Gui.so.5
#7  0x00007f27fa7dac49 in QPainterState::~QPainterState() () from /usr/lib64/libQt5Gui.so.5
#8  0x00007f27fa7cb5c9 in QRasterPaintEngineState::~QRasterPaintEngineState() () from /usr/lib64/libQt5Gui.so.5
#9  0x00007f27fa7e1f82 in QPainter::end() () from /usr/lib64/libQt5Gui.so.5
#10 0x00007f27fa82d7db in QImageTextureGlyphCache::fillTexture(QTextureGlyphCache::Coord const&, unsigned int, QFixed) () from /usr/lib64/libQt5Gui.so.5
#11 0x00007f27fa82c150 in QTextureGlyphCache::fillInPendingGlyphs() () from /usr/lib64/libQt5Gui.so.5
#12 0x00007f27fa7d0a25 in QRasterPaintEngine::drawCachedGlyphs(int, unsigned int const*, QFixedPoint const*, QFontEngine*) () from /usr/lib64/libQt5Gui.so.5
#13 0x00007f27fa7d3a4b in QRasterPaintEngine::drawTextItem(QPointF const&, QTextItem const&) () from /usr/lib64/libQt5Gui.so.5
#14 0x00007f27fa7ed847 in QPainterPrivate::drawTextItem(QPointF const&, QTextItem const&, QTextEngine*) () from /usr/lib64/libQt5Gui.so.5
#15 0x00007f27fa7ee1c0 in QPainter::drawText(QPointF const&, QString const&, int, int) () from /usr/lib64/libQt5Gui.so.5
#16 0x00007f27fd05be8e in Konsole::TerminalDisplay::drawCharacters(QPainter&, QRect const&, QString const&, Konsole::Character const*, bool) () from /usr/lib64/libkonsoleprivate.so.17
#17 0x00007f27fd05c2c5 in Konsole::TerminalDisplay::drawTextFragment(QPainter&, QRect const&, QString const&, Konsole::Character const*) () from /usr/lib64/libkonsoleprivate.so.17
#18 0x00007f27fd062fd7 in Konsole::TerminalDisplay::drawContents(QPainter&, QRect const&) () from /usr/lib64/libkonsoleprivate.so.17
#19 0x00007f27fd0634b7 in Konsole::TerminalDisplay::paintEvent(QPaintEvent*) () from /usr/lib64/libkonsoleprivate.so.17
#20 0x00007f27fab47688 in QWidget::event(QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#21 0x00007f27fd06638a in Konsole::TerminalDisplay::event(QEvent*) () from /usr/lib64/libkonsoleprivate.so.17
#22 0x00007f27fab018bc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#23 0x00007f27fab08808 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#24 0x00007f27fa044ad8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib64/libQt5Core.so.5
#25 0x00007f27fab4002a in QWidgetPrivate::sendPaintEvent(QRegion const&) () from /usr/lib64/libQt5Widgets.so.5
#26 0x00007f27fab4063f in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQt5Widgets.so.5
#27 0x00007f27fab10f7c in QWidgetBackingStore::doSync() () from /usr/lib64/libQt5Widgets.so.5
#28 0x00007f27fab11241 in QWidgetBackingStore::sync() () from /usr/lib64/libQt5Widgets.so.5
#29 0x00007f27fab3113f in QWidgetPrivate::syncBackingStore() () from /usr/lib64/libQt5Widgets.so.5
#30 0x00007f27fab47750 in QWidget::event(QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#31 0x00007f27fac4106b in QMainWindow::event(QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#32 0x00007f27fc8fca87 in KMainWindow::event(QEvent*) () from /usr/lib64/libKF5XmlGui.so.5
#33 0x00007f27fc938c15 in KXmlGuiWindow::event(QEvent*) () from /usr/lib64/libKF5XmlGui.so.5
#34 0x00007f27fab018bc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#35 0x00007f27fab08808 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#36 0x00007f27fa044ad8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib64/libQt5Core.so.5
#37 0x00007f27fa046d5b in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib64/libQt5Core.so.5
#38 0x00007f27fa08ca93 in postEventSourceDispatch(_GSource*, int (*)(void*), void*) () from /usr/lib64/libQt5Core.so.5
#39 0x00007f27f4d5685d in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#40 0x00007f27f4d56b08 in g_main_context_iterate.isra () from /usr/lib64/libglib-2.0.so.0
#41 0x00007f27f4d56bac in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#42 0x00007f27fa08cb07 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#43 0x00007f27fa04389a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#44 0x00007f27fa04af6d in QCoreApplication::exec() () from /usr/lib64/libQt5Core.so.5
#45 0x00007f27fd6ae5cd in kdemain () from /usr/lib64/libkdeinit5_konsole.so
#46 0x00007f27fd2fa954 in __libc_start_main () from /lib64/libc.so.6
#47 0x0000000000400779 in _start ()

Reported using DrKonqi
Comment 1 Kurt Hindenburg 2017-10-07 15:13:53 UTC
All I get is an empty rectangle - I did install fantasque Sans in ubuntu.  What font are you using in Konsole?
Comment 2 Kurt Hindenburg 2017-10-07 15:19:07 UTC
OK I had to reboot for the Fantasque to show up - even w/ that as Konsole's font, all I get is an empty rectangle.  I'm on Qt5.9 though.
Comment 3 Samantha McVey 2017-10-07 18:27:51 UTC
Created attachment 108225 [details]
attachment-449-0.html

I am on QT 5.7. I use Sabayon, a Gentoo based distro (5.7 is the latest available on Gentoo).

On October 7, 2017 8:19:07 AM PDT, Kurt Hindenburg <bugzilla_noreply@kde.org> wrote:
>https://bugs.kde.org/show_bug.cgi?id=385286
>
>--- Comment #2 from Kurt Hindenburg <kurt.hindenburg@gmail.com> ---
>OK I had to reboot for the Fantasque to show up - even w/ that as
>Konsole's
>font, all I get is an empty rectangle.  I'm on Qt5.9 though.
>
>-- 
>You are receiving this mail because:
>You reported the bug.
Comment 4 Samantha McVey 2017-10-15 13:25:34 UTC
Created attachment 108361 [details]
New crash information added by DrKonqi

konsole (17.08.2) using Qt 5.9.2

I just updated my QT to 5.9.2 and the crash is still there. Konsole is now 17.08.2.

As before it crashes when I run:
perl -C -E'say "\x{1F3F4}\x{E0067}\x{E0062}\x{E0065}\x{E006E}\x{E0067}\x{E007F}"'

I also backed up konsolerc and it crashes as well, so it doesn't seem related to the font I was using.

-- Backtrace (Reduced):
#6  0x00007ff20d73520b in blend_untransformed_argb(int, QT_FT_Span_ const*, void*) () from /usr/lib64/libQt5Gui.so.5
#7  0x00007ff20d75bd50 in fillRect_normalized(QRect const&, QSpanData*, QRasterPaintEnginePrivate*) () from /usr/lib64/libQt5Gui.so.5
#8  0x00007ff20d7605ef in QRasterPaintEngine::drawImage(QPointF const&, QImage const&) () from /usr/lib64/libQt5Gui.so.5
#9  0x00007ff20d77c83c in QPainter::drawImage(QPointF const&, QImage const&) () from /usr/lib64/libQt5Gui.so.5
#10 0x00007ff20d7c0873 in QImageTextureGlyphCache::fillTexture(QTextureGlyphCache::Coord const&, unsigned int, QFixed) () from /usr/lib64/libQt5Gui.so.5
Comment 5 Christoph Feck 2017-10-17 22:18:52 UTC
Tried the command from comment #4, and it displayed a Waving Black Flag emoji. No crash. Are you using a color font for emoji?
Comment 6 Samantha McVey 2017-12-19 09:04:55 UTC
I can now report the issue has finally been fixed.

This is on Konsole 17.12.0 and QT 5.9.3.

QT 5.9.2 and 17.08.2 it was not working for sure, but I checked again today and it no longer crashes!

A little more info on the original cause/replication I did previously:
Also there have been no changes in my fonts and I don't use color fonts. It does not show any icon when I run it, but I may not have the fonts installed. Though that is besides the point and the issue I was having was viewing text documents with less was causing my entire Konsole process to segfault! (The perl command was just replicating it). I noticed the crashes semi-randomly, though I could produce it every time viewing one of the files here: https://www.unicode.org/Public/emoji/5.0/ so I created a perl command print the offending codepoints to trigger the crash for a bug report.

If you have any more questions let me know, but I'm going to close it as resolved.