Bug 56082

Summary: kspell recursion eats memory and "kills" kmail livelocks desktop
Product: [Unmaintained] kdelibs Reporter: Roger Larsson <roger.larsson>
Component: kspellAssignee: David Sweet <dsweet>
Status: RESOLVED FIXED    
Severity: major    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Roger Larsson 2003-03-18 02:47:23 UTC
Version:           unknown (using KDE 3.1.9)
Compiler:          gcc version 3.2
OS:          Linux (i686) release 2.4.19-4GB

(Ok, I have 2.2GB swap on this 256MB machine - that is  why it did not actually
crash. But it did run deep into swap.

This is a partial call chain:

#0  mALLOc (bytes=24) at malloc.c:3600
#1  0x40dbbab4 in malloc (bytes=20) at malloc.c:5514
#2  0x4179594e in operator new(unsigned) () from /usr/lib/libstdc++.so.5
#3  0x413e45c8 in QString::setLength(unsigned) (this=0xa7db6a30, newLen=16)
    at tools/qstring.cpp:13533
#4  0x413ea585 in QString::operator+=(QString const&) (this=0xa7db6a30,
    str=@0xa7db6a20) at tools/qstring.cpp:16584
#5  0x404f0ac0 in KSpell::check2(KProcIO*) (this=0x8b462f8)
    at ../kdecore/kdebug.h:190
#6  0x404f332d in KSpell::qt_invoke(int, QUObject*) (this=0x8b462f8, _id=5,
    _o=0xa7db6b20) at /opt/qt-copy/include/private/qucom_p.h:312
#7  0x411488ba in QObject::activate_signal(QConnectionList*, QUObject*) (
    this=0x89f6fa8, clist=0x8a013f0, o=0xa7db6b20) at kernel/qobject.cpp:2232
#8  0x40d8ebf5 in KProcIO::readReady(KProcIO*) (this=0x8b462f8, t0=0x18)
    at kprocio.moc:109
#9  0x40d8e718 in KProcIO::controlledEmission() (this=0x18) at kprocio.cpp:212
(More stack frames follow...)

[This is repeated over and over again...]

#40070 0x40d8ebf5 in KProcIO::readReady(KProcIO*) (this=0x8b462f8, t0=0x18)
    at kprocio.moc:109
#40071 0x40d8e718 in KProcIO::controlledEmission() (this=0x18)
    at kprocio.cpp:212
#40072 0x40d8e6d4 in KProcIO::ackRead() (this=0x89f6fa8) at kprocio.cpp:203
#40073 0x404f0f37 in KSpell::check2(KProcIO*) (this=0x8b462f8)
    at kspell.cpp:982
#40074 0x404f332d in KSpell::qt_invoke(int, QUObject*) (this=0x8b462f8, _id=5,
    _o=0xa80ab300) at /opt/qt-copy/include/private/qucom_p.h:312
#40075 0x411488ba in QObject::activate_signal(QConnectionList*, QUObject*) (
    this=0x89f6fa8, clist=0x8a013f0, o=0xa80ab300) at kernel/qobject.cpp:2232
#40076 0x40d8ebf5 in KProcIO::readReady(KProcIO*) (this=0x8b462f8, t0=0x18)
    at kprocio.moc:109
(More stack frames follow...)

[Got this using a "info stack -10" but I did not get any more info than this]

#5237642 0x410e1985 in QApplication::notify(QObject*, QEvent*) (
    this=0xbffff1a0, receiver=0x8933810, e=0xbfffeec0)
    at kernel/qapplication.cpp:2112
Comment 1 Zack Rusin 2003-07-20 22:24:27 UTC
Could you try it again and see whether it still does that? We fixed the recursion problem in cvs and 
it shouldn't occur anymore. 
Comment 2 Zack Rusin 2003-09-14 01:02:05 UTC
Fixed in CVS.