Package: nicotine
Version: 1.2.5.1-1
Severity: normal

Hi,

I had many problems with nicotine (crashes, all network connections
being "stuck" etc.) recently, but the worst is that sometimes after a
crash the configuration (containing all pending download) is simply
deleted. This sometimes happens after just 10-20 minutes, sometimes
nicotine runs for days.

Starting nicotine from a shell instead of the menu I found that it often
complains about "Too many open files", and that it can not save the
config. file. It seems that nicotine first deletes the old config file,
and then tries to write a new one. But if writing the new config does
not succeed, the old version is not recovered.

During normal operation nicotine seems to use 2-300 file descriptors.
Right now I have a stuck nicotine instance that has all 1024 descriptors
that select() can handle open, 801 of them being a TCP connection in the
CLOSE_WAIT state - i.e. they're already dead. "Stuck" right now means:

- the UI still runs
- no network traffic
- the config file is missing (luckily I now have a copy of config.old
  that's about 20 minutes old)
- "Disconnect" did nothing but disable the "Disconnect" entry in the
  menu (the downloads did not disappear from the "Downloads" tab, all
  network connections remained open, and "Connect" remains disabled in
  the menu)
- even "Rescan shares" complains about "Too many open files"

So,

- there appears to be a serious file descriptor leak; maybe nicotine
  defers the closing of dead connections for far too long?
- writing the config file is unsafe wrt. I/O errors
- slskproty.py should be using poll instead of select (unfortunately I
  don't know much about Python so I can't offer to create a patch), so
  it could handle file handles > 1024
- if "Disconnect" would work (i.e. it would _really_ close all network
  connections), then nicotine would probably able to recover

Gabor

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (990, 'unstable'), (500, 'testing'), (500, 'stable'), (101, 
'experimental')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/dash
Kernel: Linux 2.6.18
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)

Versions of packages nicotine depends on:
ii  python                        2.4.3-11   An interactive high-level object-o
ii  python-gtk2                   2.8.6-6    Python bindings for the GTK+ widge
ii  python-support                0.5.2      automated rebuilding support for p

Versions of packages nicotine recommends:
ii  python-geoip                  1.2.1-2    python bindings for the GeoIP IP-t
ii  python-pyvorbis               1.3-1.2    A Python interface to the Ogg Vorb

-- no debconf information


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to