Bug 293184 - Kate crashed with big file text
Summary: Kate crashed with big file text
Status: RESOLVED DUPLICATE of bug 225228
Alias: None
Product: kate
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Fedora RPMs Linux
: NOR crash
Target Milestone: ---
Assignee: KWrite Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-02-03 04:12 UTC by Elkin Cruz
Modified: 2012-02-03 08:04 UTC (History)
0 users

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 Elkin Cruz 2012-02-03 04:12:10 UTC
Application: kate (3.8.0)
KDE Platform Version: 4.8.00 (4.8.0
Qt Version: 4.8.0
Operating System: Linux 3.2.2-1.fc16.x86_64 x86_64
Distribution (Platform): Fedora RPMs

-- Information about the crash:
- What I was doing when the application crashed:

I tried to open a large file text (> 120 MiB) and Kate crashed every time with the given segfault.

Perhaps that has something to do with the file text as it contains one newline... only a 120 MiB line of characters.

- Custom settings of the application:

Line length limit set in: Unlimited

The crash can be reproduced every time.

-- Backtrace:
Application: Kate (kate), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
82	T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
[Current thread is 1 (Thread 0x7f8bd6613840 (LWP 2706))]

Thread 3 (Thread 0x7f8bc95b8700 (LWP 2707)):
#0  0x00000039c3ae6af3 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x0000003c11c44fd8 in g_main_context_poll (n_fds=1, fds=0x7f8bc4002400, priority=<optimized out>, timeout=-1, context=0x7f8bc40009a0) at gmain.c:3402
#2  g_main_context_iterate (context=0x7f8bc40009a0, block=<optimized out>, dispatch=1, self=<optimized out>) at gmain.c:3084
#3  0x0000003c11c4549c in g_main_context_iteration (context=0x7f8bc40009a0, may_block=1) at gmain.c:3152
#4  0x00000039abba7dc6 in QEventDispatcherGlib::processEvents (this=0x7f8bc40008c0, flags=<optimized out>) at kernel/qeventdispatcher_glib.cpp:426
#5  0x00000039abb78182 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#6  0x00000039abb783d7 in QEventLoop::exec (this=0x7f8bc95b7d10, flags=...) at kernel/qeventloop.cpp:204
#7  0x00000039aba78b27 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#8  0x00000039abb57e7f in QInotifyFileSystemWatcherEngine::run (this=0x1778cf0) at io/qfilesystemwatcher_inotify.cpp:248
#9  0x00000039aba7bb6b in QThreadPrivate::start (arg=0x1778cf0) at thread/qthread_unix.cpp:298
#10 0x00000039c3e07d90 in start_thread (arg=0x7f8bc95b8700) at pthread_create.c:309
#11 0x00000039c3aef48d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 2 (Thread 0x7f8bc8cb0700 (LWP 2708)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:165
#1  0x00000039b4d84e62 in QTWTF::TCMalloc_PageHeap::scavengerThread (this=0x39b507e240) at ../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:2359
#2  0x00000039b4d84e99 in QTWTF::TCMalloc_PageHeap::runScavengerThread (context=<optimized out>) at ../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:1464
#3  0x00000039c3e07d90 in start_thread (arg=0x7f8bc8cb0700) at pthread_create.c:309
#4  0x00000039c3aef48d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Thread 1 (Thread 0x7f8bd6613840 (LWP 2706)):
[KCrash Handler]
#6  stringToCMap (flags=..., nglyphs=0x7fffc1ab2bb8, glyphs=<optimized out>, len=4096, str=0x7f8b9424e02a, this=0x17ffad0) at text/qfontengine_ft.cpp:1556
#7  QFontEngineFT::stringToCMap (this=0x17ffad0, str=0x7f8b9424e02a, len=4096, glyphs=<optimized out>, nglyphs=0x7fffc1ab2bb8, flags=...) at text/qfontengine_ft.cpp:1501
#8  0x000000326e3eccac in QFontEngineMulti::stringToCMap (this=0x1803ec0, str=0x7f8b9424e02a, len=4096, glyphs=0x7fffc1ab2f90, nglyphs=0x7fffc1ab317c, flags=...) at text/qfontengine.cpp:1335
#9  0x000000326e41e5fe in stringToGlyphs (fontEngine=0x1803ec0, glyphs=0x7fffc1ab2f90, item=0x7fffc1ab2eb0) at text/qtextengine.cpp:841
#10 QTextEngine::shapeTextWithHarfbuzz (this=0x1ae8560, item=<optimized out>) at text/qtextengine.cpp:1225
#11 0x000000326e41f39b in QTextEngine::shapeText (this=0x1ae8560, item=0) at text/qtextengine.cpp:922
#12 0x000000326e41f6ee in QTextEngine::shape (this=0x1ae8560, item=0) at text/qtextengine.cpp:1437
#13 0x000000326e43048e in QTextLine::layout_helper (this=0x7fffc1ab3ae0, maxGlyphs=<optimized out>) at text/qtextlayout.cpp:1752
#14 0x00007f8bca83ca62 in KateRenderer::layoutLine (this=0x17f9750, lineLayout=..., maxwidth=661, cacheLayout=<optimized out>) at /usr/src/debug/kate-4.8.0/part/render/katerenderer.cpp:896
#15 0x00007f8bca84127d in KateLayoutCache::line (this=0x17fd840, realLine=1, virtualLine=1) at /usr/src/debug/kate-4.8.0/part/render/katelayoutcache.cpp:318
#16 0x00007f8bca84235a in KateLayoutCache::updateViewCache (this=0x17fd840, startPos=..., newViewLineCount=<optimized out>, viewLinesScrolled=<optimized out>) at /usr/src/debug/kate-4.8.0/part/render/katelayoutcache.cpp:270
#17 0x00007f8bca89319f in doUpdateView (viewLinesScrolled=0, changed=<optimized out>, this=0x17f9cb0) at /usr/src/debug/kate-4.8.0/part/view/kateviewinternal.cpp:550
#18 KateViewInternal::doUpdateView (this=0x17f9cb0, changed=<optimized out>, viewLinesScrolled=0) at /usr/src/debug/kate-4.8.0/part/view/kateviewinternal.cpp:530
#19 0x00007f8bca8938bc in KateViewInternal::updateView (this=0x17f9cb0, changed=true, viewLinesScrolled=<optimized out>) at /usr/src/debug/kate-4.8.0/part/view/kateviewinternal.cpp:524
#20 0x00007f8bca87eae6 in KateView::updateView (this=0x17f8f50, changed=<optimized out>) at /usr/src/debug/kate-4.8.0/part/view/kateview.cpp:1706
#21 0x00007f8bca7fab79 in KateDocument::updateConfig (this=0x1459830) at /usr/src/debug/kate-4.8.0/part/document/katedocument.cpp:4072
#22 0x00007f8bca8f370e in KateDocumentConfig::setEncoding (this=0x145a7e0, encoding=<optimized out>) at /usr/src/debug/kate-4.8.0/part/utils/kateconfig.cpp:827
#23 0x00007f8bca81401b in KateBuffer::openFile (this=0x1459580, m_file=...) at /usr/src/debug/kate-4.8.0/part/document/katebuffer.cpp:167
#24 0x00007f8bca80efad in KateDocument::openFile (this=0x1459830) at /usr/src/debug/kate-4.8.0/part/document/katedocument.cpp:1981
#25 0x0000003271c278cc in KParts::ReadOnlyPartPrivate::openLocalFile (this=0x1457f50) at /usr/src/debug/kdelibs-4.8.0/kparts/part.cpp:590
#26 0x0000003271c27e84 in KParts::ReadOnlyPart::openUrl (this=0x1459830, url=...) at /usr/src/debug/kdelibs-4.8.0/kparts/part.cpp:554
#27 0x000000326dc365a5 in KateDocManager::openUrl (this=0x11ed3a0, url=<optimized out>, encoding=..., isTempFile=false, docInfo=...) at /usr/src/debug/kate-4.8.0/kate/app/katedocmanager.cpp:243
#28 0x000000326dc4483d in KateViewManager::openUrl (this=0x150c780, url=..., encoding=..., activate=false, isTempFile=false, docInfo=...) at /usr/src/debug/kate-4.8.0/kate/app/kateviewmanager.cpp:287
#29 0x000000326dc2d558 in KateApp::startupKate (this=0x7fffc1ab4e60) at /usr/src/debug/kate-4.8.0/kate/app/kateapp.cpp:222
#30 0x000000326dc2e255 in KateApp::initKate (this=0x7fffc1ab4e60) at /usr/src/debug/kate-4.8.0/kate/app/kateapp.cpp:135
#31 0x000000326dc2e472 in KateApp::KateApp (this=0x7fffc1ab4e60, args=<optimized out>) at /usr/src/debug/kate-4.8.0/kate/app/kateapp.cpp:72
#32 0x0000003272405c86 in kdemain (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kate-4.8.0/kate/app/katemain.cpp:373
#33 0x00000039c3a2169d in __libc_start_main (main=0x400730 <main(int, char**)>, argc=3, ubp_av=0x7fffc1ab6398, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffc1ab6388) at libc-start.c:226
#34 0x0000000000400761 in _start ()

This bug may be a duplicate of or related to bug 283826.

Possible duplicates by query: bug 283826.

Reported using DrKonqi
Comment 1 Dominik Haumann 2012-02-03 08:04:17 UTC
It is a problem in Qt itself, as we support bi-directional text rendering, and
in order to do that successfully, the entire line needs to be layouted: a text line with 120,000,000 characters. And this is where Qt is very bad at for very long lines.

A workaround exists in KDE 4.8, as Kate will automatically wrap the lines at
column 1024 (depending what you configure in the settings). It's still not
optimal, but better than a stall of the program.

I close this as duplicate report.

*** This bug has been marked as a duplicate of bug 225228 ***