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