Bug 242535

Summary: akregator crashes on startup if file descriptor limit is too low
Product: [Applications] akregator Reporter: Thomas Klausner <tk>
Component: generalAssignee: kdepim bugs <kdepim-bugs>
Status: RESOLVED UNMAINTAINED    
Severity: crash CC: kde
Priority: NOR    
Version: 1.6.2   
Target Milestone: ---   
Platform: NetBSD pkgsrc   
OS: NetBSD   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Thomas Klausner 2010-06-22 23:32:41 UTC
Version:           1.6.2 (using KDE 4.4.4) 
OS:                NetBSD

This bug report is actually for 1.6.3, but that's not in the selection box.

The default file descriptor limit on NetBSD is 128. With this limit, akregator crashes during startup, or, when I just tried it again, a bit later.
It writes (among many other lines):
kio_http(8703)/kio (KIOConnection) KIO::Connection::connectToRemote: Unknown requested KIO::Connection protocol=' "" ' ( "" ) 
kio_http(1297)/kio (KIOConnection) KIO::Connection::connectToRemote: Unknown requested KIO::Connection protocol=' "" ' ( "" ) 
akregator(28962): Failed to lock file "/var/tmp/kdecache-wiz/kpc/kde-icon-cache.lock" , last result = 2 
akregator(28962): Failed to lock file "/var/tmp/kdecache-wiz/kpc/kde-icon-cache.lock" , last result = 2 
akregator(28962): Failed to lock file "/var/tmp/kdecache-wiz/kpc/kde-icon-cache.lock" , last result = 2 
akregator(28962): Failed to lock file "/var/tmp/kdecache-wiz/kpc/kde-icon-cache.lock" , last result = 2 
akregator(28962): Failed to lock file "/var/tmp/kdecache-wiz/kpc/kde-icon-cache.lock" , last result = 2 
akregator(28962): Failed to lock file "/var/tmp/kdecache-wiz/kpc/kde-icon-cache.lock" , last result = 2 
QEventDispatcherUNIXPrivate(): Unable to create thread pipe: Too many open files
QEventDispatcherUNIXPrivate(): Can not continue without a thread pipe
KCrash: Application 'akregator' crashing...

Reproducible: Always

Steps to Reproduce:
So far, it happened during every startup, except the last two tries, where it happened while I was reading posts (when I wasn't actively doing anything but reading).
I guess it's updating feeds in the background.

Actual Results:  
Just start, or start and browse on an article.
My feeds.opml has 119 lines matching xmlUrl.

Expected Results:  
Don't crash :)
Either be more careful with resources, or increase the limit using setrlimit(2).
Comment 1 Nicolas L. 2010-06-23 15:54:24 UTC
please can you paste you backtrace on this bugreport ?      ( make sure your debug infos are activated )

thank you
Comment 2 Thomas Klausner 2011-02-28 23:46:41 UTC
I tried to get a useful backtrace (now using 4.4.9).
I've compiled it with symbols, but when I start it from gdb in the command line, it exits much earlier:

(gdb) r
Starting program: /usr/obj/misc/kdepim4/work.x86_64/kdepim-4.4.9/_KDE_build/akregator/src/akregator

Breakpoint 1, main (argc=1, argv=0x7f7fffffd478)
    at /usr/obj/misc/kdepim4/work.x86_64/kdepim-4.4.9/akregator/src/main.cpp:74
74      int main(int argc, char **argv)
(gdb) n
76          Akregator::AboutData about;
(gdb)
2195        inline QFlags(QFlag f) : i(f) {}
(gdb)
77          KCmdLineArgs::init(argc, argv, &about);
(gdb)
382     inline QByteArray::QByteArray(): d(&shared_null) { d->ref.ref(); }
(gdb)
121                      : "memory");
(gdb)
382     inline QByteArray::QByteArray(): d(&shared_null) { d->ref.ref(); }
(gdb)
121                      : "memory");
(gdb)
78          KCmdLineArgs::addCmdLineOptions( Akregator::akregator_options() );
(gdb)
383     inline QByteArray::~QByteArray() { if (!d->ref.deref()) qFree(d); }
(gdb)
133                      : "memory");
(gdb)
383     inline QByteArray::~QByteArray() { if (!d->ref.deref()) qFree(d); }
(gdb)
133                      : "memory");
(gdb)
383     inline QByteArray::~QByteArray() { if (!d->ref.deref()) qFree(d); }
(gdb)
79          KUniqueApplication::addCmdLineOptions();
(gdb)
81          if ( !Akregator::Application::start() ) {
(gdb)





Program exited with code 0377.   
(gdb)
The program is not being run.


Starting it outside of gdb, I see:
wiz@yt:/usr/pkgsrc/misc/kdepim4>  work.x86_64/kdepim-4.4.9/_KDE_build/akregator/src/akregator
akregator(7039)/kdeui (KIconLoader) KSharedDataCache::Private::mapSharedMemory: Failed to establish shared memory mapping, will fallback to private memory -- memory usage will increase
QMetaObject::invokeMethod: No such method KUniqueApplication::loadCommandLineOptionsForNewInstance()
wiz@yt:/usr/pkgsrc/misc/kdepim4> Object::connect: No such signal QDBusAbstractInterface::iconChanged( bool, QString, QString )
Object::connect: No such signal Akregator::SubscriptionListView::signalDropped (KUrl::List &, Akregator::TreeNode*, Akregator::Folder*)
Object::connect:  (sender name:   'feedtree')
Object::connect:  (receiver name: 'akregator_view')
akregator(7039)/kdeui (KIconLoader) KSharedDataCache::Private::mapSharedMemory: Failed to establish shared memory mapping, will fallback to private memory -- memory usage will increase
akregator(7039) KIO::SlavePrivate::SlavePrivate: Connection server not listening, could not connect
QEventDispatcherUNIXPrivate(): Unable to create thread pipe: Too many open files
QEventDispatcherUNIXPrivate(): Can not continue without a thread pipe
akregator(7039): couldn't create slave: "Cannot talk to klauncher: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken."
KCrash: Application 'akregator' crashing...
KCrash: Attempting to start /usr/pkg/lib/kde4/libexec/drkonqi from kdeinit
sock_file=/home/wiz/.kde/socket-yt.nih.at/kdeinit4__0

Inside the drkonqi window there is no useful information (backtrace doesn't seem to work/work well on NetBSD).

When I load the core dump in gdb, I see:
Program terminated with signal 5, Trace/breakpoint trap.
#0  0x00007f7ff7c02614 in _rtld_linkmap_add () from /usr/libexec/ld.elf_so
(gdb) bt
#0  0x00007f7ff7c02614 in _rtld_linkmap_add () from /usr/libexec/ld.elf_so
#1  0x00007f7ff7c03de8 in dlopen () from /usr/libexec/ld.elf_so
#2  0x00007f7fefb8e154 in QLibraryPrivate::load_sys ()
   from /usr/pkg/qt4/lib/libQtCore.so.4
#3  0x00007f7fefb894d0 in QLibraryPrivate::load ()
   from /usr/pkg/qt4/lib/libQtCore.so.4
#4  0x00007f7fefb89506 in QLibrary::load ()
   from /usr/pkg/qt4/lib/libQtCore.so.4
#5  0x00007f7ff0d7dc2d in qt_init () from /usr/pkg/qt4/lib/libQtGui.so.4
#6  0x00007f7ff0d04daa in QApplicationPrivate::construct ()
   from /usr/pkg/qt4/lib/libQtGui.so.4
#7  0x00007f7ff0d05840 in QApplication::QApplication ()
   from /usr/pkg/qt4/lib/libQtGui.so.4
#8  0x00007f7ff1a666d5 in KApplication (this=0x7f7fffffd340,
    GUIenabled=<value optimized out>, cData=@0x7f7fffffd260)
    at /scratch/x11/kdelibs4/work/kdelibs-4.5.5/kdeui/kernel/kapplication.cpp:380
#9  0x00007f7ff1a6d3f8 in KUniqueApplication (this=0x7f7fffffd340,
    GUIenabled=true, configUnique=<value optimized out>)
    at /scratch/x11/kdelibs4/work/kdelibs-4.5.5/kdeui/kernel/kuniqueapplication.cpp:317
#10 0x00007f7ff681495b in PimUniqueApplication (this=0x7f7ff77a57b8)
    at /scratch/misc/kdepimlibs4/work/kdepimlibs-4.5.5/kontactinterface/pimuniqueapplication.cpp:42
#11 0x000000000040971d in main (argc=<value optimized out>,
    argv=<value optimized out>)
    at /usr/obj/misc/kdepim4/work.x86_64/kdepim-4.4.9/akregator/src/main.cpp:40
(gdb)  thread 2
Thread ID 2 not known.

What now?

Have you tried limiting the number of file descriptors to 128 (default here) before starting akregator with many feeds? Or perhaps less, so you might reproduce the problem faster.
Comment 3 Denis Kurz 2016-09-24 19:38:14 UTC
This bug has only been reported for versions before 4.14, which have been unsupported for at least two years now. Can anyone tell if this bug still present?

If noone confirms this bug for a Framework-based version of akregator (version 5.0 or later, as part of KDE Applications 15.08 or later), it gets closed in about three months.
Comment 4 Denis Kurz 2017-01-07 22:39:58 UTC
Just as announced in my last comment, I close this bug. If you encounter it again in a recent version (at least 5.0 aka 15.08), please open a new one unless it already exists. Thank you for all your input.