Package: rtorrent
Version: 0.8.7-5
Severity: important

0.8.7-5 crashes when starting up. I first experienced this bug in
0.8.7-4 and it persisted after I upgraded. I rebuilt 0.8.7-5 with
nostrip and got a backtrace:

Program terminated with signal 4, Illegal instruction.
#0  0x00000000004d005d in ~Object (__first=<value optimized out>, __last=..., 
    __pred=...) at /usr/include/torrent/object.h:103
#1  ~pair (__first=<value optimized out>, __last=..., __pred=...)
    at /usr/include/c++/4.5/bits/stl_pair.h:72
#2  parse_command_single (__first=<value optimized out>, __last=..., 
    __pred=...) at ./../rpc/parse_commands.h:76
#3  operator() (__first=<value optimized out>, __last=..., __pred=...)
    at view.cc:65
#4  operator() (__first=<value optimized out>, __last=..., __pred=...)
    at /usr/include/c++/4.5/backward/binders.h:119
#5  std::__find_if<__gnu_cxx::__normal_iterator<core::Download**, 
std::vector<core::Download*> >, std::binder1st<core::view_downloads_compare> > (
    __first=<value optimized out>, __last=..., __pred=...)
    at /usr/include/c++/4.5/bits/stl_algo.h:226
#6  0x00007ffff595e800 in __internal_atexit (func=0, arg=0x833da0, 
    d=0xffffffff, listp=0x52f9af) at cxa_atexit.c:35
#7  0x0000000000516000 in __libc_csu_init ()
#8  0x0000000000000000 in ?? ()

The crash is caused by an illegal instruction.

With my .rtorrent.rc (which I'm attaching) removed the crash is
different:

Program terminated with signal 6, Aborted.
#0  0x00007f00bc959165 in raise (sig=<value optimized out>)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00007f00bc95bf70 in abort () at abort.c:92
#2  0x000000000041048c in do_panic (signum=11) at main.cc:904
#3  0x0000000000447956 in operator() (signum=<value optimized out>)
    at /usr/include/sigc++-2.0/sigc++/functors/slot.h:440
#4  SignalHandler::caught (signum=<value optimized out>)
    at signal_handler.cc:87
#5  <signal handler called>
#6  display::Frame::balance (this=0x40, x=0, y=0, width=80, height=38)
    at frame.cc:299
#7  0x00000000004dbf4a in display::Manager::adjust_layout (this=0x0)
    at manager.cc:81
#8  0x000000000178ba98 in ?? ()
#9  0x000000000041826d in 
std::__adjust_heap<__gnu_cxx::__normal_iterator<rak::priority_item**, 
std::vector<rak::priority_item*, rak::cacheline_allocator<rak::priority_item*> 
> >, long, rak::priority_item*, rak::priority_compare> (
    __first=<value optimized out>, __holeIndex=<value optimized out>, 
    __len=<value optimized out>, __value=<value optimized out>, __comp=...)
    at /usr/include/c++/4.5/bits/stl_heap.h:316
#10 0x000000000041506b in operator() (argc=1, argv=0x7fff43b31678)
    at ../rak/functional_fun.h:102
#11 call (argc=1, argv=0x7fff43b31678) at ../rak/priority_queue_default.h:63
#12 priority_queue_perform (argc=1, argv=0x7fff43b31678)
    at ../rak/priority_queue_default.h:97
#13 main (argc=1, argv=0x7fff43b31678) at main.cc:821

Squeeze's 0.8.6-1 also crashes. The backtrace looks somewhat different
again but I haven't rebuilt it with nostrip so I don't think it's any
use posting it.

Strangely I don't think I upgraded any packages since I last used
rtorrent successfully, but now the crash is 100% consistent. But I did
have to replace my router yesterday (from an O2 rebranded Thomson
Speedtouch 585 to a Netgear DG835v3). Could anything as low level as
local IP addresses and port forwarding affect rtorrent like this?

-- System Information:
Debian Release: wheezy/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.37-2-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages rtorrent depends on:
ii  libc6                         2.11.2-13  Embedded GNU C Library: Shared lib
ii  libcurl3                      7.21.4-1   Multi-protocol file transfer libra
ii  libgcc1                       1:4.5.2-5  GCC support library
ii  libncursesw5                  5.8-1      shared libraries for terminal hand
ii  libsigc++-2.0-0c2a            2.2.4.2-1  type-safe Signal Framework for C++
ii  libssl0.9.8                   0.9.8o-5   SSL shared libraries
ii  libstdc++6                    4.5.2-5    The GNU Standard C++ Library v3
ii  libtorrent13                  0.12.7-4   a C++ BitTorrent library by Raksha
ii  libxmlrpc-core-c3             1.16.33-2  A lightweight RPC library based on

rtorrent recommends no packages.

Versions of packages rtorrent suggests:
ii  screen                        4.0.3-14   terminal multiplexor with VT100/AN

-- no debconf information
# This is an example resource file for rTorrent. Copy to
# ~/.rtorrent.rc and enable/modify the options as needed. Remember to
# uncomment the options you wish to enable.

# Maximum and minimum number of peers to connect to per torrent.
#min_peers = 40
#max_peers = 100

# Same as above but for seeding completed torrents (-1 = same as downloading)
#min_peers_seed = 10
#max_peers_seed = 50

# Maximum number of simultanious uploads per torrent.
#max_uploads = 15

# Global upload and download rate in KiB. "0" for unlimited.
#download_rate = 0
upload_rate = 15
schedule = off_peak_rate,01:00:00,24:00:00,upload_rate=40
schedule = peak_rate,10:00:00,24:00:00,upload_rate=15

# Default directory to save the downloaded torrents.
directory = /mnt/xfs/torrents/

# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
session = /home/tony/.rtorrent.session

# Watch a directory for new torrents, and stop those that have been
# deleted.
#schedule = watch_directory,5,5,load_start=./watch/*.torrent
#schedule = untied_directory,5,5,stop_untied=

# Close torrents when diskspace is low.
#schedule = low_diskspace,5,60,close_low_diskspace=100M

# Stop torrents when reaching upload ratio in percent,
# when also reaching total upload in bytes, or when
# reaching final upload ratio in percent.
# example: stop at ratio 2.0 with at least 200 MB uploaded, or else ratio 20.0
#schedule = ratio,60,60,"stop_on_ratio=200,200M,2000"
#schedule = ratio,60,60,"stop_on_ratio=150,200M,1000"

# The ip address reported to the tracker.
#ip = 127.0.0.1
#ip = rakshasa.no

# The ip address the listening socket and outgoing connections is
# bound to.
#bind = 127.0.0.1
#bind = rakshasa.no

# Port range to use for listening.
port_range = 49160-49300

# Start opening ports at a random position within the port range.
#port_random = no

# Check hash for finished torrents. Might be usefull until the bug is
# fixed that causes lack of diskspace not to be properly reported.
#check_hash = no

# Set whetever the client should try to connect to UDP trackers.
use_udp_trackers = yes

# Alternative calls to bind and ip that should handle dynamic ip's.
#schedule = ip_tick,0,1800,ip=rakshasa
#schedule = bind_tick,0,1800,bind=rakshasa

# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, 
prefer_plaintext
#
# The example value allows incoming encrypted connections, starts unencrypted
# outgoing connections but retries with encryption if they fail, preferring
# plaintext to RC4 encryption after the encrypted handshake
#
# encryption = allow_incoming,enable_retry,prefer_plaintext

# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to "disable" (completely disable DHT), "off" (do not start DHT),
# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).
# The default is "off". For DHT to work, a session directory must be defined.
# 
dht = on

# UDP port to use for DHT. 
# 
# dht_port = 6881

# Enable peer exchange (for torrents not marked private)
#
peer_exchange = yes

#
# Do not modify the following parameters unless you know what you're doing.
#

# Hash read-ahead controls how many MB to request the kernel to read
# ahead. If the value is too low the disk may not be fully utilized,
# while if too high the kernel might not be able to keep the read
# pages in memory thus end up trashing.
#hash_read_ahead = 10

# Interval between attempts to check the hash, in milliseconds.
#hash_interval = 100

# Number of attempts to check the hash while using the mincore status,
# before forcing. Overworked systems might need lower values to get a
# decent hash checking rate.
#hash_max_tries = 10

Reply via email to