Giter Site home page Giter Site logo

libtorrent's Introduction

libtorrent is an open source C++ library implementing the BitTorrent protocol,
along with most popular extensions, making it suitable for real world
deployment. It is configurable to be able to fit both servers and embedded
devices.

The main goals of libtorrent are to be efficient and easy to use.

See docs/index.html for more detailed build and usage instructions.

To build with boost-build, run:

   b2

See docs/building.html for more details on how to build and which configuration
options are available.

libtorrent's People

Stargazers

Belial avatar

Watchers

 avatar

libtorrent's Issues

Autoconf fails in debian testing with libboost 1.40

What steps will reproduce the problem?
1. Install libboost1.40-dev using aptitude 
In libtorrent dir: 
2. ./autotool.sh
3. ./configure

What is the expected output? What do you see instead?
Expected behaviour is to keep on with the configuration, since
boost_system-mt was found. Instead, configuration stops with the message
"configure: error: Could not link against boost_system-boost_system-mt !".

What version of the product are you using? On what operating system?
libtorrent version: RC_0_15
os: GNU/Linux (debian testing "squeeze", kernel version: 2.6.32-trunk-686)

Please provide any additional information below.
Downgrading boost to 1.39 solves the problem!

See attached config.log for more info.

Original issue reported on code.google.com by [email protected] on 24 Jan 2010 at 7:13

Attachments:

low upload speed then no limits on upload

What steps will reproduce the problem?
1.make qbittorrent with version 14.8
2.start qbittorrent with many torrent and unlimited speed of upload and see
7-8 active torrent from 200 and speed ~150Kb/s
3.set maximum upload speed to 5000KB/s and see 40 and more active torrent
and speed 1.1MB/S (max for my internet chanel)
(3)Not working on 15 version


What version of the product are you using? On what operating system?
FreeBSD 8.0-Stable


Please provide any additional information below.
Clearly libtorrent related: Please file your report there:
http://code.google.com/p/libtorrent/issues/entry

** Changed in: qbittorrent
Status: New => Invalid

-- 
disabling chekbox "Upload" in "Global bandwidth" causes strong decrease in
upload speed and quantity of active torrents
https://bugs.launchpad.net/bugs/517502
You received this bug notification because you are a direct subscriber
of the bug.

Status in qBittorrent - An advanced bittorrent client in C++ / Qt4: Invalid

Bug description:
disabling chekbox "Upload" in "Global bandwidth" causes strong decrease in
upload speed and quantity of active torrents.
during the limitation of upload to 5000KiB quantity of active torrent is
~40 and during the limitation desactivation it's ~9.
For clear experiment restart needed.
2.1.3 FreeBSD 8.0/AMD64

To unsubscribe from this bug, go to:
https://bugs.launchpad.net/qbittorrent/+bug/517502/+subscribe

Original issue reported on code.google.com by [email protected] on 22 Feb 2010 at 5:43

Unknown error 18446744073709551615 after adding .torrent

What steps will reproduce the problem?
1. in Preferences is "Pre-allocate all files" activated
2. add a new .torrent from browser to qBittorrent
3.

What is the expected output? What do you see instead?
Download should start and continue until 100% is downloaded.
Instead of this, I get an error message and the status is changed to
"paused". If I restart qBittorrent and start the torrent, the download
continues normally.

What version of the product are you using? On what operating system?
qBittorrent 2.2.0beta4/libtorrent 0.15.0 4302
x86_64 GNU/Linux 2.6.31-19-generic #56-Ubuntu SMP

Please provide any additional information below.
console output attached
Problem exists only if "Pre-allocate all files" is activated

Original issue reported on code.google.com by [email protected] on 23 Feb 2010 at 6:43

Attachments:

invariant check hit in connection_queue.cpp

What steps will reproduce the problem?
1. I don't know exactly what causes this but it happened to me 3 times in
the last 5 minutes.
2.
3.

What is the expected output? What do you see instead?


What version of the product are you using? On what operating system?
version: 0.15.0.0
$Rev: 3323 $

Please provide any additional information below.
version: 0.15.0.0
$Rev: 3323 $
file: 'connection_queue.cpp'
line: 167
function: void libtorrent::connection_queue::check_invariant() const
expression: num_connecting == m_num_connecting
stack:
1: assert_fail(char const*, int, char const*, char const*)
2: libtorrent::connection_queue::check_invariant() const
3:
libtorrent::invariant_checker_impl<libtorrent::connection_queue>::~invariant_che
cker_impl()
4: libtorrent::connection_queue::try_connect(boost::unique_lock<boost::mutex>&)
5: libtorrent::connection_queue::on_try_connect()
6:
boost::asio::detail::handler_queue::handler_wrapper<boost::_bi::bind_t<void, 
boost::_mfi::mf0<void,
libtorrent::connection_queue>,
boost::_bi::list1<boost::_bi::value<libtorrent::connection_queue*> > >
>::do_call(boost::asio::detail::handler_queue::handler*)
7:
boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<false>
>::run(boost::system::error_code&)
8: libtorrent::aux::session_impl::operator()()
9:
boost::detail::thread_data<boost::reference_wrapper<libtorrent::aux::session_imp
l>
>::run()
10: thread_proxy
11: 
12: clone

Original issue reported on code.google.com by [email protected] on 9 Feb 2010 at 6:17

crash in http_tracker_connection::on_response

abrt 1.0.6 detected a crash.

architecture: x86_64
Attached file: backtrace
cmdline: qbittorrent
comment: Was downloading the avi file 90% was done.
component: qbittorrent
executable: /usr/bin/qbittorrent
kernel: 2.6.31.12-174.2.3.fc12.x86_64
package: qbittorrent-2.1.5-3.fc12
rating: 4
reason: Process was terminated by signal 6 (Aborted)
release: Fedora release 12 (Constantine)

How to reproduce
-----
1. Started the application.
2. Crashed all of a sudden in the middle of download.
3.

Original issue reported on code.google.com by [email protected] on 18 Feb 2010 at 2:12

Attachments:

do not report download volume of webseeds to tracker

I often have torrents without any seeder.
Then I download the file by adding an URL seed and seeding it to the other
clients in the swarm.
Unfortunately this download lowers my dl/ul ratio which is reported for
this torrent to the tracker.
If there are not many downloaders, the ratio remains below 1 and the
tracker thinks I am a leecher.
If I download the file outside from qBittorrent/libtorrent and add it after
the download to qBittorrent, the downlaod volume is not counted.

It would be a nice feature to disable the reporting of this download volume
to the tracker.
The reporting of downloads from torrent seeds and peers should remain
unchanged.

Original issue reported on code.google.com by [email protected] on 23 Feb 2010 at 4:26

get peer upload/download limits API functions

What steps will reproduce the problem?
1. libtorrent currently provides the following functions in the API:
void set_peer_upload_limit(asio::ip::tcp::endpoint ip, int limit) const;
void set_peer_download_limit(asio::ip::tcp::endpoint ip, int limit) const;

What is the expected output? What do you see instead?
There is no function (as far as I know) to get the upload / download limits 
for a particular peer. It would be nice to have those.

What version of the product are you using? On what operating system?
libtorrent v0.15

Please provide any additional information below.

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:17

Crash when starting DHT

What steps will reproduce the problem?
1. I don't know what is happening, it was OK a few hours ago but now it
crashes on each startup when starting DHT (with both libtorrent v0.14.9 and
v0.15)
2. If I disable DHT, all is OK.
3. If I enable DHT I GET: malloc(): memory corruption: 0x08687368 ***
The backtrace is provided after.

What is the expected output? What do you see instead?
No crash.

What version of the product are you using? On what operating system?
v0.14.9 or v0.15svn

Please provide any additional information below.
#0  0x0012d422 in __kernel_vsyscall ()
No symbol table info available.
#1  0x01fe85e1 in *__GI_raise (sig=6)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
        resultvar = <value optimized out>
        pid = 34660340
        selftid = 3231
#2  0x01feba42 in *__GI_abort () at abort.c:92
        act = {__sigaction_handler = {
            sa_handler = 0x12c4e4 <_rtld_local+1220>, 
            sa_sigaction = 0x12c4e4 <_rtld_local+1220>}, sa_mask = {__val = {
              1048576, 136837188, 134729428, 3221215716, 389853, 3221215684, 
              134609172, 63, 33, 3221215528, 34093790, 4, 0, 3221215612, 
              34660340, 20, 3221217072, 3221215732, 34212340, 33, 3221215612, 
              4, 0, 3221215708, 3221215720, 2, 34518471, 34518467, 34514017, 
              34514043, 230, 3221215612}}, sa_flags = -1073751612, 
          sa_restorer = 0x20ec963}
        sigs = {__val = {32, 0 <repeats 31 times>}}
#3  0x0201f53d in __libc_message (do_abort=2, 
    fmt=0x20ee798 "*** glibc detected *** %s: %s: 0x%s ***\n")
    at ../sysdeps/unix/sysv/linux/libc_fatal.c:189
        ap = <value optimized out>
        fd = -1073751252
---Type <return> to continue, or q <return> to quit---
        on_2 = <value optimized out>
        list = <value optimized out>
        nlist = <value optimized out>
        cp = <value optimized out>
        written = false
#4  0x020295e1 in malloc_printerr (action=<value optimized out>, 
    str=0x6 <Address 0x6 out of bounds>, ptr=0x8687368) at malloc.c:6264
        buf = "08687368"
        cp = <value optimized out>
#5  0x0202c3c5 in _int_malloc (av=<value optimized out>, 
    bytes=<value optimized out>) at malloc.c:4393
        iters = 0
        nb = 32
        idx = <value optimized out>
        bin = <value optimized out>
        victim = 0x8687360
        size = <value optimized out>
        victim_index = <value optimized out>
        remainder = <value optimized out>
        remainder_size = <value optimized out>
        block = <value optimized out>
        bit = <value optimized out>
        map = <value optimized out>
---Type <return> to continue, or q <return> to quit---
        fwd = <value optimized out>
        bck = 0x210f3f0
        errstr = <value optimized out>
        __func__ = "_int_malloc"
#6  0x0202dfcc in *__GI___libc_malloc (bytes=21) at malloc.c:3660
        ar_ptr = 0x210f3c0
        victim = <value optimized out>
        __func__ = "__libc_malloc"
#7  0x01f41737 in operator new(unsigned int) () from /usr/lib/libstdc++.so.6
No symbol table info available.
#8  0x01f1cfe6 in std::string::_Rep::_S_create(unsigned int, unsigned int,
std::allocator<char> const&) () from /usr/lib/libstdc++.so.6
No symbol table info available.
#9  0x01f1dc58 in std::string::_Rep::_M_clone(std::allocator<char> const&,
unsigned int) () from /usr/lib/libstdc++.so.6
No symbol table info available.
#10 0x01f1ea8d in std::string::reserve(unsigned int) ()
   from /usr/lib/libstdc++.so.6
No symbol table info available.
#11 0x01f1f1c7 in std::string::operator+=(char) () from /usr/lib/libstdc++.so.6
No symbol table info available.
#12 0x0812bf86 in
libtorrent::detail::read_string<std::istream_iterator<char, char,
std::char_traits<char>, int> > (in=..., end=..., len=6, str=..., 
---Type <return> to continue, or q <return> to quit---
    err=@0xbfffe63f) at /usr/include/libtorrent/bencode.hpp:164
        i = 4
#13 0x081292fa in
libtorrent::detail::bdecode_recursive<std::istream_iterator<char, char,
std::char_traits<char>, int> > (in=..., end=..., ret=..., 
    err=@0xbfffe63f, depth=2) at /usr/include/libtorrent/bencode.hpp:357
        len_s = {static npos = 4294967295, 
          _M_dataplus = {<std::allocator<char>> =
{<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
_M_p = 0x8683e8c "6"}}
        len = 6
#14 0x08128ef8 in
libtorrent::detail::bdecode_recursive<std::istream_iterator<char, char,
std::char_traits<char>, int> > (in=..., end=..., ret=..., 
    err=@0xbfffe63f, depth=1) at /usr/include/libtorrent/bencode.hpp:274
        e = @0x8687348
#15 0x081290ec in
libtorrent::detail::bdecode_recursive<std::istream_iterator<char, char,
std::char_traits<char>, int> > (in=..., end=..., ret=..., 
    err=@0xbfffe63f, depth=0) at /usr/include/libtorrent/bencode.hpp:316
        key = {m_type = libtorrent::entry::string_t, {
            data = "\314\314k\bv\250\002\002m\030\364\001\000
\000\000\364\037\367\001\250\345\377\277", dummy_aligner = 144863362930166988}}
        e = @0x868d4c4
#16 0x08125662 in libtorrent::bdecode<std::istream_iterator<char, char,
std::char_traits<char>, int> > (start=..., end=...)
    at /usr/include/libtorrent/bencode.hpp:392
---Type <return> to continue, or q <return> to quit---
        e = {m_type = libtorrent::entry::dictionary_t, {
            data =
"\000\000\000\000\000\000\000\000\030\062k\b\030\062k\b\260\324h\b\002\000\000",
dummy_aligner = 0}}
        err = false
#17 0x080fd786 in Bittorrent::enableDHT (this=0x86bf070, b=true)
    at bittorrent.cpp:1334
        dht_state_file = {<> = {<No data fields>}, <No data fields>}
        dht_state = {m_type = libtorrent::entry::undefined_t, {
            data =
"H\205i\b\000\000\000\000\000\000\000\200\001\000\000\000\000\000\000\000\001\00
0\000",
dummy_aligner = 141133128}}
        dht_state_path = {static null = {<No data fields>}, 
          static shared_null = {ref = {_q_value = 1}, alloc = 0, size = 0, 
            data = 0x84e7dfa, clean = 0, simpletext = 0, righttoleft = 0, 
            asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, 
          static shared_empty = {ref = {_q_value = 1}, alloc = 0, size = 0, 
            data = 0x1e8648e, clean = 0, simpletext = 0, righttoleft = 0, 
            asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, 
          d = 0x867f380, static codecForCStrings = 0x0}
#18 0x080f3928 in Bittorrent::configureSession (this=0x86bf070)
    at bittorrent.cpp:447
        new_listenPort = 6881
        new_resolv_countries = true
        encryptionState = 32764529
---Type <return> to continue, or q <return> to quit---
        scan_dir = {static null = {<No data fields>}, static shared_null = {
            ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x84e7dfa, 
            clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, 
            capacity = 0, reserved = 0, array = {0}}, static shared_empty = {
            ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x1e8648e, 
            clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, 
            capacity = 0, reserved = 0, array = {0}}, d = 0x86900b8, 
          static codecForCStrings = 0x0}
        down_limit = 21
        up_limit = 20
        sessionSettings = {user_agent = {static npos = 4294967295, 
            _M_dataplus = {<std::allocator<char>> =
{<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
              _M_p = 0x86b1cac "qBittorrent v2.2.0beta3"}}, 
          tracker_completion_timeout = 60, tracker_receive_timeout = 40, 
          stop_tracker_timeout = 1, tracker_maximum_response_length = 1048576, 
          piece_timeout = 20, request_timeout = 50, request_queue_time = 3, 
          max_allowed_in_request_queue = 250, max_out_request_queue = 200, 
          whole_pieces_threshold = 20, peer_timeout = 120, 
          urlseed_timeout = 20, urlseed_pipeline_size = 5, 
          urlseed_wait_retry = 30, file_pool_size = 40, 
          allow_multiple_connections_per_ip = false, max_failcount = 3, 
          min_reconnect_time = 60, peer_connect_timeout = 7, 
---Type <return> to continue, or q <return> to quit---
          ignore_limits_on_local_network = true, connection_speed = 10, 
          send_redundant_have = false, lazy_bitfields = true, 
          inactivity_timeout = 600, unchoke_interval = 15, 
          optimistic_unchoke_multiplier = 4, announce_ip = {
            type_ = boost::asio::ip::address::ipv4, ipv4_address_ = {addr_ = {
                s_addr = 0}}, ipv6_address_ = {addr_ = {__in6_u = {
                  __u6_addr8 = '\000' <repeats 15 times>, __u6_addr16 = {0, 0, 
                    0, 0, 0, 0, 0, 0}, __u6_addr32 = {0, 0, 0, 0}}}, 
              scope_id_ = 0}}, num_want = 200, initial_picker_threshold = 4, 
          allowed_fast_set_size = 10, 
          max_outstanding_disk_bytes_per_connection = 65536, 
          handshake_timeout = 10, use_dht_as_fallback = false, 
          free_torrent_hashes = true, upnp_ignore_nonrouters = true, 
          send_buffer_watermark = 81920, auto_upload_slots = true, 
          use_parole_mode = true, cache_size = 1024, cache_expiry = 60, 
          outgoing_ports = {first = 0, second = 0}, peer_tos = 0 '\000', 
          active_downloads = -1, active_seeds = -1, active_limit = -1, 
          dont_count_slow_torrents = true, auto_manage_interval = 30, 
          share_ratio_limit = 2, seed_time_ratio_limit = 7, 
          seed_time_limit = 86400, peer_turnover = 0.0199999996, 
          peer_turnover_cutoff = 1, close_redundant_connections = true, 
          auto_scrape_interval = 1200, auto_scrape_min_interval = 300, 
          max_peerlist_size = 8000, min_announce_interval = 300, 
---Type <return> to continue, or q <return> to quit---
          prioritize_partial_pieces = false, auto_manage_startup = 120, 
          rate_limit_ip_overhead = false}
        peer_id = {static null = {<No data fields>}, static shared_null = {
            ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x84e7dfa, 
            clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, 
            capacity = 0, reserved = 0, array = {0}}, static shared_empty = {
            ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x1e8648e, 
            clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, 
            capacity = 0, reserved = 0, array = {0}}, d = 0x867f0b8, 
          static codecForCStrings = 0x0}
        encryptionSettings = {out_enc_policy = 141210428, 
          in_enc_policy = 3221219628, allowed_enc_level = 33728630, 
          prefer_rc4 = 186}
        proxySettings = {hostname = {static npos = 4294967295, 
            _M_dataplus = {<std::allocator<char>> =
{<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
              _M_p = 0x1cf4cb9
"\211\360\213]\370\213u\374\203\354\004\211\354]\302\004"}}, port =
-1073747668, username = {static npos = 4294967295, 
            _M_dataplus = {<std::allocator<char>> =
{<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
_M_p = 0x86ab338 ""}}, 
          password = {static npos = 4294967295, 
            _M_dataplus = {<std::allocator<char>> =
{<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
_M_p = 0x0}}, type = 29824554}
---Type <return> to continue, or q <return> to quit---
        newTorrentExport = true
        old_listenPort = 0
        alternative_speeds = false
#19 0x080f05a6 in Bittorrent (this=0x86bf070) at bittorrent.cpp:138
        version = {{p = {static shared_null = {ref = {_q_value = 1}, 
                alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, 
              d = 0x8691310}, d = 0x8691310}}
        peer_id = {static null = {<No data fields>}, static shared_null = {
            ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x84e7dfa, 
            clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, 
            capacity = 0, reserved = 0, array = {0}}, static shared_empty = {
            ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x1e8648e, 
            clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, 
            capacity = 0, reserved = 0, array = {0}}, d = 0x867f0b8, 
          static codecForCStrings = 0x0}
#20 0x0815bb12 in GUI (this=0x8664220, parent=0x0, torrentCmdLine=...)
    at GUI.cpp:113
        uid = {static null = {<No data fields>}, static shared_null = {ref = {
              _q_value = 1}, alloc = 0, size = 0, data = 0x84e7dfa, clean = 0, 
            simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, 
            reserved = 0, array = {0}}, static shared_empty = {ref = {
              _q_value = 1}, alloc = 0, size = 0, data = 0x1e8648e, clean = 0, 
            simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, 
---Type <return> to continue, or q <return> to quit---
            reserved = 0, array = {0}}, d = 0x1e85ff4, 
          static codecForCStrings = 0x0}
        cur_height = 3
#21 0x080eb12f in main (argc=1, argv=0xbffff2f4) at main.cpp:306
        splash = 0x8634588
        torrentCmdLine = {<QList<QString>> = {{p = {static shared_null = {
                  ref = {_q_value = 1}, alloc = 0, begin = 0, end = 0, 
                  sharable = 1, array = {0x0}}, d = 0x8662e30}, 
              d = 0x8662e30}}, <No data fields>}
        window = 0x210dff4
        file = {<QIODevice> = {<QObject> = {_vptr.QObject = 0x1e84bc8, 
              static staticMetaObject = {d = {superdata = 0x0, 
                  stringdata = 0x1e1de80 "QObject", data = 0x1e1df20, 
                  extradata = 0x1e80260}}, d_ptr = {d = 0x84f4810}, 
              static staticQtMetaObject = {d = {superdata = 0x0, 
                  stringdata = 0x1e269c0 "Qt", data = 0x1e29fc0, 
                  extradata = 0x0}}}, static staticMetaObject = {d = {
                superdata = 0x84e7ca0, stringdata = 0x1e2e9e0 "QIODevice", 
                data = 0x1e2ea40, extradata = 0x0}}}, 
          static staticMetaObject = {d = {superdata = 0x1e84c48, 
              stringdata = 0x1e2e960 "QFile", data = 0x1e2e980, 
              extradata = 0x0}}}
        no_splash = false
---Type <return> to continue, or q <return> to quit---
        uid = {static null = {<No data fields>}, static shared_null = {ref = {
              _q_value = 1}, alloc = 0, size = 0, data = 0x84e7dfa, clean = 0, 
            simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, 
            reserved = 0, array = {0}}, static shared_empty = {ref = {
              _q_value = 1}, alloc = 0, size = 0, data = 0x1e8648e, clean = 0, 
            simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, 
            reserved = 0, array = {0}}, d = 0x84f4d68, 
          static codecForCStrings = 0x0}
        translator = {<QObject> = {_vptr.QObject = 0x1e85628, 
            static staticMetaObject = {d = {superdata = 0x0, 
                stringdata = 0x1e1de80 "QObject", data = 0x1e1df20, 
                extradata = 0x1e80260}}, d_ptr = {d = 0x86630c0}, 
            static staticQtMetaObject = {d = {superdata = 0x0, 
                stringdata = 0x1e269c0 "Qt", data = 0x1e29fc0, 
                extradata = 0x0}}}, static staticMetaObject = {d = {
              superdata = 0x84e7ca0, stringdata = 0x1e30ea0 "QTranslator", 
              data = 0x1e30ec0, extradata = 0x0}}}
        ret = 139412984
        locale = {static null = {<No data fields>}, static shared_null = {
            ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x84e7dfa, 
            clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, 
            capacity = 0, reserved = 0, array = {0}}, static shared_empty = {
            ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x1e8648e, 
---Type <return> to continue, or q <return> to quit---
            clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, 
            capacity = 0, reserved = 0, array = {0}}, d = 0x86631b0, 
          static codecForCStrings = 0x0}
        settings = {<QObject> = {_vptr.QObject = 0x1e84e28, 
            static staticMetaObject = {d = {superdata = 0x0, 
                stringdata = 0x1e1de80 "QObject", data = 0x1e1df20, 
                extradata = 0x1e80260}}, d_ptr = {d = 0x84f4b78}, 
            static staticQtMetaObject = {d = {superdata = 0x0, 
                stringdata = 0x1e269c0 "Qt", data = 0x1e29fc0, 
                extradata = 0x0}}}, static staticMetaObject = {d = {
              superdata = 0x84e7ca0, stringdata = 0x1e2ec60 "QSettings", 
              data = 0x1e2ec80, extradata = 0x0}}}
        localSocket = {<QIODevice> = {<QObject> = {_vptr.QObject = 0x1c06f48, 
              static staticMetaObject = {d = {superdata = 0x0, 
                  stringdata = 0x1e1de80 "QObject", data = 0x1e1df20, 
                  extradata = 0x1e80260}}, d_ptr = {d = 0x84f5df8}, 
              static staticQtMetaObject = {d = {superdata = 0x0, 
                  stringdata = 0x1e269c0 "Qt", data = 0x1e29fc0, 
                  extradata = 0x0}}}, static staticMetaObject = {d = {
                superdata = 0x84e7ca0, stringdata = 0x1e2e9e0 "QIODevice", 
                data = 0x1e2ea40, extradata = 0x0}}}, 
          static staticMetaObject = {d = {superdata = 0x1e84c48, 
              stringdata = 0x1bb9b80 "QLocalSocket", data = 0x1bb9ca0, 
---Type <return> to continue, or q <return> to quit---
              extradata = 0x0}}}

Original issue reported on code.google.com by [email protected] on 9 Feb 2010 at 8:18

ASSERT hit on startup (policy.hpp)

What steps will reproduce the problem?
1. the crash happens on startup

What is the expected output? What do you see instead?
Should not hit the ASSERT

What version of the product are you using? On what operating system?
libtorrent v0.15svn

Please provide any additional information below.
version: 0.15.0.0
$Rev: 3323 $
file: 'policy.cpp'
line: 1205
function: bool libtorrent::policy::has_connection(const 
libtorrent::peer_connection*)
expression: c->remote() == c->get_socket()->remote_endpoint(ec) || ec
stack:
1: assert_fail(char const*, int, char const*, char const*)
2: libtorrent::policy::has_connection(libtorrent::peer_connection const*)
3: libtorrent::aux::session_impl::check_invariant() const
4: libtorrent::invariant_checker_impl<libtorrent::aux::session_impl> 
libtorrent::make_invariant_checker<libtorrent::aux::session_impl>(libtorren
t::aux::session_impl const&)
5: libtorrent::aux::session_impl::recalculate_unchoke_slots(int, int)
6: libtorrent::aux::session_impl::on_tick(boost::system::error_code const&)
7: 
boost::asio::detail::handler_queue::handler_wrapper<boost::asio::detail::bi
nder1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, 
libtorrent::aux::session_impl, boost::system::error_code const&>, 
boost::_bi::list2<boost::_bi::value<libtorrent::aux::session_impl*>, 
boost::arg<1> > >, boost::system::error_code> 
>::do_call(boost::asio::detail::handler_queue::handler*)
8: 
boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<fal
se> >::run(boost::system::error_code&)
9: libtorrent::aux::session_impl::operator()()
10: 
boost::detail::thread_data<boost::reference_wrapper<libtorrent::aux::sessio
n_impl> >::run()
11: thread_proxy
12: 
13: clone

Program received signal SIGINT, Interrupt.
[Switching to Thread 0xb7491b70 (LWP 12028)]
0x00d76422 in __kernel_vsyscall ()
(gdb) bt 25
#0  0x00d76422 in __kernel_vsyscall ()
#1  0x006b8170 in raise (sig=2) at ../nptl/sysdeps/unix/sysv/linux/pt-
raise.c:42
#2  0x010ab734 in assert_fail (expr=0x13a7358 "c->remote() == c-
>get_socket()->remote_endpoint(ec) || ec", line=1205, file=0x13a6e5b 
"policy.cpp", 
    function=0x13a75c0 "bool libtorrent::policy::has_connection(const 
libtorrent::peer_connection*)") at assert.cpp:136
#3  0x011b46cf in libtorrent::policy::has_connection (this=0x8867260, 
c=0xb5a9d178) at policy.cpp:1205
#4  0x011c2463 in libtorrent::aux::session_impl::check_invariant 
(this=0x8691410) at session_impl.cpp:3362
#5  0x011dd967 in 
libtorrent::invariant_checker_impl<libtorrent::aux::session_impl> 
libtorrent::make_invariant_checker<libtorrent::aux::session_impl>(libtorren
t::aux::session_impl const&) () from /usr/lib/libtorrent-rasterbar.so.6
#6  0x011d50ef in libtorrent::aux::session_impl::recalculate_unchoke_slots 
(this=0x8691410, congested_torrents=0, uncongested_torrents=4)
    at session_impl.cpp:2191
#7  0x011d782b in libtorrent::aux::session_impl::on_tick (this=0x8691410, 
e=...) at session_impl.cpp:1923
#8  0x011da21b in 
boost::asio::detail::handler_queue::handler_wrapper<boost::asio::detail::bi
nder1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, 
libtorrent::aux::session_impl, boost::system::error_code const&>, 
boost::_bi::list2<boost::_bi::value<libtorrent::aux::session_impl*>, 
boost::arg<1> > >, boost::system::error_code> 
>::do_call(boost::asio::detail::handler_queue::handler*) () from 
/usr/lib/libtorrent-rasterbar.so.6
#9  0x011110d7 in 
boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<fal
se> >::run(boost::system::error_code&) ()
   from /usr/lib/libtorrent-rasterbar.so.6
#10 0x011d4ef2 in boost::asio::io_service::run (this=0x8691410) at 
/usr/include/boost/asio/impl/io_service.ipp:65
#11 libtorrent::aux::session_impl::operator() (this=0x8691410) at 
session_impl.cpp:2370
#12 0x011e44d3 in 
boost::detail::thread_data<boost::reference_wrapper<libtorrent::aux::sessio
n_impl> >::run() () from /usr/lib/libtorrent-rasterbar.so.6
#13 0x007c3ab5 in thread_proxy () from /usr/lib/libboost_thread.so.1.40.0
#14 0x006af8de in start_thread (arg=0xb7491b70) at pthread_create.c:300
#15 0x0152f8fe in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Original issue reported on code.google.com by [email protected] on 19 Jan 2010 at 12:42

geoip database might get deleted before all tracker responses are processed

In rare cases the session destructor might be called while a tracker 
announce takes place. In such case the geoip database gets deleted before 
all peers from such tracker responses are processed.
This results in crashes if geoip functions try to access the database 
(because the database pointer is not set back to 0).

RC_0_15
Revision 4369

Original issue reported on code.google.com by [email protected] on 15 Mar 2010 at 6:30

crash for 0.14.8 + qbittorrent 2.1.3 on x86_64

related information:
boost version = 1.39.0
$ uname -a
Linux breeze.localdomain 2.6.30-std-def-alt15 #1 SMP Mon Dec 14 08:46:35
UTC 2009 x86_64 GNU/Linux

also
https://bugs.launchpad.net/qbittorrent/+bug/517062
=========================================
*************************************************************
Catching SIGSEGV, please report a bug at http://bug.qbittorrent.org
and provide the following backtrace:
stack trace:
  /lib64/libc.so.6 [0x7fca6173d070]
  /usr/lib64/libtorrent-rasterbar.so.5 :
boost::asio::detail::timer_queue<boost::asio::time_traits<libtorrent::ptime> 
>::cancel_timer(void*)+0x78
 [0x7fca63f7ae2e]
  /usr/lib64/libtorrent-rasterbar.so.5 : unsigned long
boost::asio::detail::epoll_reactor<false>::cancel_timer<boost::asio::time_traits
<libtorrent::ptime>
>(boost::asio::detail::timer_queue<boost::asio::time_traits<libtorrent::ptime>
>&, void*)+0x41  [0x7fca63f79c95]
  /usr/lib64/libtorrent-rasterbar.so.5 :
boost::asio::detail::deadline_timer_service<boost::asio::time_traits<libtorrent:
:ptime>,
boost::asio::detail::epoll_reactor<false>
>::cancel(boost::asio::detail::deadline_timer_service<boost::asio::time_traits<l
ibtorrent::ptime>,
boost::asio::detail::epoll_reactor<false> >::implementation_type&,
boost::system::error_code&)+0x6b  [0x7fca63f78a11]
  /usr/lib64/libtorrent-rasterbar.so.5 :
boost::asio::detail::deadline_timer_service<boost::asio::time_traits<libtorrent:
:ptime>,
boost::asio::detail::epoll_reactor<false>
>::expires_at(boost::asio::detail::deadline_timer_service<boost::asio::time_trai
ts<libtorrent::ptime>,
boost::asio::detail::epoll_reactor<false> >::implementation_type&,
libtorrent::ptime const&, boost::system::error_code&)+0x2f  [0x7fca63f79d1b]
  /usr/lib64/libtorrent-rasterbar.so.5 :
boost::asio::detail::deadline_timer_service<boost::asio::time_traits<libtorrent:
:ptime>,
boost::asio::detail::epoll_reactor<false>
>::expires_from_now(boost::asio::detail::deadline_timer_service<boost::asio::tim
e_traits<libtorrent::ptime>,
boost::asio::detail::epoll_reactor<false> >::implementation_type&,
libtorrent::time_duration const&, boost::system::error_code&)+0x4c 
[0x7fca63f78ce0]
  /usr/lib64/libtorrent-rasterbar.so.5 :
boost::asio::deadline_timer_service<libtorrent::ptime,
boost::asio::time_traits<libtorrent::ptime>
>::expires_from_now(boost::asio::detail::deadline_timer_service<boost::asio::tim
e_traits<libtorrent::ptime>,
boost::asio::detail::epoll_reactor<false> >::implementation_type&,
libtorrent::time_duration const&, boost::system::error_code&)+0x38 
[0x7fca63f77ae0]
  /usr/lib64/libtorrent-rasterbar.so.5 :
boost::asio::basic_deadline_timer<libtorrent::ptime,
boost::asio::time_traits<libtorrent::ptime>,
boost::asio::deadline_timer_service<libtorrent::ptime,
boost::asio::time_traits<libtorrent::ptime> >
>::expires_from_now(libtorrent::time_duration const&,
boost::system::error_code&)+0x37  [0x7fca63f7681f]
  /usr/lib64/libtorrent-rasterbar.so.5 :
libtorrent::torrent::on_lsd_announce()+0x169  [0x7fca64003237]
  /usr/lib64/libtorrent-rasterbar.so.5 :
libtorrent::torrent::on_lsd_announce_disp(boost::weak_ptr<libtorrent::torrent>,
boost::system::error_code const&)+0x67  [0x7fca6400308d]
  /usr/lib64/libtorrent-rasterbar.so.5 : void
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> >::operator()<void (*)(boost::weak_ptr<libtorrent::torrent>,
boost::system::error_code const&),
boost::_bi::list1<boost::system::error_code&> >(boost::_bi::type<void>,
void (*&)(boost::weak_ptr<libtorrent::torrent>, boost::system::error_code
const&), boost::_bi::list1<boost::system::error_code&>&, int)+0x79 
[0x7fca6404ef79]
  /usr/lib64/libtorrent-rasterbar.so.5 : void boost::_bi::bind_t<void, void
(*)(boost::weak_ptr<libtorrent::torrent>, boost::system::error_code
const&),
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> >
>::operator()<boost::system::error_code>(boost::system::error_code&)+0x4a 
[0x7fca6404ed7c]
  /usr/lib64/libtorrent-rasterbar.so.5 :
boost::asio::detail::binder1<boost::_bi::bind_t<void, void
(*)(boost::weak_ptr<libtorrent::torrent>, boost::system::error_code
const&),
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> > >, boost::system::error_code>::operator()()+0x23 
[0x7fca6404e8a9]
  /usr/lib64/libtorrent-rasterbar.so.5 : void
boost::asio::asio_handler_invoke<boost::asio::detail::binder1<boost::_bi::bind_t
<void,
void (*)(boost::weak_ptr<libtorrent::torrent>, boost::system::error_code
const&),
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> > >, boost::system::error_code>
>(boost::asio::detail::binder1<boost::_bi::bind_t<void, void
(*)(boost::weak_ptr<libtorrent::torrent>, boost::system::error_code
const&),
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> > >, boost::system::error_code>, ...)+0x7f  [0x7fca6404d573]
  /usr/lib64/libtorrent-rasterbar.so.5 : void
boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder1<boost::_b
i::bind_t<void,
void (*)(boost::weak_ptr<libtorrent::torrent>, boost::system::error_code
const&),
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> > >, boost::system::error_code>, boost::_bi::bind_t<void,
void (*)(boost::weak_ptr<libtorrent::torrent>, boost::system::error_code
const&),
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> > > >(boost::asio::detail::binder1<boost::_bi::bind_t<void,
void (*)(boost::weak_ptr<libtorrent::torrent>, boost::system::error_code
const&),
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> > >, boost::system::error_code> const&,
boost::_bi::bind_t<void, void (*)(boost::weak_ptr<libtorrent::torrent>,
boost::system::error_code const&),
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> > >*)+0x3e  [0x7fca6404c7bf]
  /usr/lib64/libtorrent-rasterbar.so.5 : void
boost::asio::detail::asio_handler_invoke<boost::asio::detail::binder1<boost::_bi
::bind_t<void,
void (*)(boost::weak_ptr<libtorrent::torrent>, boost::system::error_code
const&),
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> > >, boost::system::error_code>, boost::_bi::bind_t<void,
void (*)(boost::weak_ptr<libtorrent::torrent>, boost::system::error_code
const&),
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> > >,
boost::system::error_code>(boost::asio::detail::binder1<boost::_bi::bind_t<void,
void (*)(boost::weak_ptr<libtorrent::torrent>, boost::system::error_code
const&),
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> > >, boost::system::error_code> const&,
boost::asio::detail::binder1<boost::_bi::bind_t<void, void
(*)(boost::weak_ptr<libtorrent::torrent>, boost::system::error_code
const&),
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> > >, boost::system::error_code>*)+0x23  [0x7fca6404b15f]
  /usr/lib64/libtorrent-rasterbar.so.5 : void
boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder1<boost::_b
i::bind_t<void,
void (*)(boost::weak_ptr<libtorrent::torrent>, boost::system::error_code
const&),
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> > >, boost::system::error_code>,
boost::asio::detail::binder1<boost::_bi::bind_t<void, void
(*)(boost::weak_ptr<libtorrent::torrent>, boost::system::error_code
const&),
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> > >, boost::system::error_code>
>(boost::asio::detail::binder1<boost::_bi::bind_t<void, void
(*)(boost::weak_ptr<libtorrent::torrent>, boost::system::error_code
const&),
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> > >, boost::system::error_code> const&,
boost::asio::detail::binder1<boost::_bi::bind_t<void, void
(*)(boost::weak_ptr<libtorrent::torrent>, boost::system::error_code
const&),
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> > >, boost::system::error_code>*)+0x23  [0x7fca6404a9c8]
  /usr/lib64/libtorrent-rasterbar.so.5 :
boost::asio::detail::handler_queue::handler_wrapper<boost::asio::detail::binder1
<boost::_bi::bind_t<void,
void (*)(boost::weak_ptr<libtorrent::torrent>, boost::system::error_code
const&),
boost::_bi::list2<boost::_bi::value<boost::weak_ptr<libtorrent::torrent> >,
boost::arg<1> > >, boost::system::error_code>
>::do_call(boost::asio::detail::handler_queue::handler*)+0x68  [0x7fca6404931e]
  /usr/lib64/libtorrent-rasterbar.so.5 :
boost::asio::detail::handler_queue::handler::invoke()+0x1d  [0x7fca63f15c19]
  /usr/lib64/libtorrent-rasterbar.so.5 :
boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<false>
>::do_one(boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex>&,
boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<false>
>::idle_thread_info*, boost::system::error_code&)+0x277  [0x7fca63f2366d]
  /usr/lib64/libtorrent-rasterbar.so.5 :
boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<false>
>::run(boost::system::error_code&)+0xb5  [0x7fca63f1d8c9]
  /usr/lib64/libtorrent-rasterbar.so.5 :
boost::asio::io_service::run(boost::system::error_code&)+0x27  [0x7fca63fb5739]
  /usr/lib64/libtorrent-rasterbar.so.5 :
libtorrent::aux::session_impl::operator()()+0xa1  [0x7fca63faf033]
  /usr/lib64/libtorrent-rasterbar.so.5 :
boost::detail::thread_data<boost::reference_wrapper<libtorrent::aux::session_imp
l>
>::run()+0x1f  [0x7fca63fe0dbf]
  /usr/lib64/libboost_thread.so.1.39.0 : thread_proxy()+0x60  [0x7fca610e9af0]
  /lib64/libpthread.so.0 [0x7fca635e851a]
  /lib64/libc.so.6 : clone()+0x6d  [0x7fca617d38ed]

Original issue reported on code.google.com by [email protected] on 4 Feb 2010 at 5:29

Abnormally high CPU usage

What steps will reproduce the problem?
I had several users complaining about high cpu usage that can occur from 
time to time apparently due to file system operations.

What is the expected output? What do you see instead?
Should not happen.

What version of the product are you using? On what operating system?
Latest RC_0_14 branch on Linux

Please provide any additional information below.
strace output when CPU usage looks like this:

gettimeofday({1262727476, 428648}, NULL) = 0
poll([{fd=3, events=POLLIN}, {fd=11, events=POLLIN|POLLPRI}, {fd=13, 
events=POLLIN|POLLPRI}, {fd=14, events=POLLIN|POLLPRI}, {fd=15, 
events=POLLIN|POLLPRI}, {fd=16, events=POLLIN}, {fd=17, events=POLLIN}, 
{fd=18, events=POLLIN}, {fd=19, events=POLLIN}, {fd=7, events=POLLIN}, 
{fd=40, events=POLLIN}, {fd=8, events=POLLIN}], 12, 0) = 0 (Timeout)
read(7, 0x92813a0, 4096) = -1 EAGAIN (Resource temporarily unavailable)
clock_gettime(CLOCK_MONOTONIC, {93537, 249214261}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 249272090}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 249350312}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 249438312}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 249524915}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 249567099}) = 0
read(7, 0x92813a0, 4096) = -1 EAGAIN (Resource temporarily unavailable)
read(16, 0x92b5470, 4096) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1262727476, 429361}, NULL) = 0
poll([{fd=3, events=POLLIN}, {fd=11, events=POLLIN|POLLPRI}, {fd=13, 
events=POLLIN|POLLPRI}, {fd=14, events=POLLIN|POLLPRI}, {fd=15, 
events=POLLIN|POLLPRI}, {fd=16, events=POLLIN}, {fd=17, events=POLLIN}, 
{fd=18, events=POLLIN}, {fd=19, events=POLLIN}, {fd=7, events=POLLIN}, 
{fd=40, events=POLLIN}, {fd=8, events=POLLIN}], 12, 0) = 0 (Timeout)
read(7, 0x92813a0, 4096) = -1 EAGAIN (Resource temporarily unavailable)
clock_gettime(CLOCK_MONOTONIC, {93537, 249931112}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 249993690}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 250073588}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 250162147}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 250249588}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 250293169}) = 0
read(7, 0x92813a0, 4096) = -1 EAGAIN (Resource temporarily unavailable)
read(16, 0x92b5470, 4096) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1262727476, 430022}, NULL) = 0
poll([{fd=3, events=POLLIN}, {fd=11, events=POLLIN|POLLPRI}, {fd=13, 
events=POLLIN|POLLPRI}, {fd=14, events=POLLIN|POLLPRI}, {fd=15, 
events=POLLIN|POLLPRI}, {fd=16, events=POLLIN}, {fd=17, events=POLLIN}, 
{fd=18, events=POLLIN}, {fd=19, events=POLLIN}, {fd=7, events=POLLIN}, 
{fd=40, events=POLLIN}, {fd=8, events=POLLIN}], 12, 0) = 0 (Timeout)
read(7, 0x92813a0, 4096) = -1 EAGAIN (Resource temporarily unavailable)

Original issue reported on code.google.com by [email protected] on 5 Jan 2010 at 9:55

Crash in disconnect_peer

What steps will reproduce the problem?
1. This crash happens on rare occasions (once or twice month)
2.
3.

What is the expected output? What do you see instead?
no crash

What version of the product are you using? On what operating system?
v0.14.9

Please provide any additional information below.
Due to the low frequency of this crash, it is too difficult for me to get a
gdb backtrace.

  /usr/lib/libtorrent-rasterbar.so.5 [0x8b84a0]
  /usr/lib/libtorrent-rasterbar.so.5 :
libtorrent::torrent::disconnect_peers(int)+0x144  [0x8bcee4]
  /usr/lib/libtorrent-rasterbar.so.5 :
libtorrent::aux::session_impl::second_tick(boost::system::error_code
const&)+0xe11  [0x88f4f1]
  /usr/lib/libtorrent-rasterbar.so.5 :
boost::asio::detail::handler_queue::handler_wrapper<boost::asio::detail::binder1
<boost::_bi::bind_t<void,
boost::_mfi::mf1<void, libtorrent::aux::session_impl,
boost::system::error_code const&>,
boost::_bi::list2<boost::_bi::value<libtorrent::aux::session_impl*>,
boost::arg<1> > >, boost::system::error_code>
>::do_call(boost::asio::detail::handler_queue::handler*)+0x7b  [0x89ac6b]
  /usr/lib/libtorrent-rasterbar.so.5 :
boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<false>
>::run(boost::system::error_code&)+0x350  [0x851b40]
  /usr/lib/libtorrent-rasterbar.so.5 :
libtorrent::aux::session_impl::operator()()+0x84  [0x893bf4]
  /usr/lib/libtorrent-rasterbar.so.5 :
boost::detail::thread_data<boost::reference_wrapper<libtorrent::aux::session_imp
l>
>::run()+0x23  [0x8a5ab3]
  /usr/lib/libboost_thread.so.1.40.0 : thread_proxy()+0x65  [0xf57ab5]
  /lib/tls/i686/cmov/libpthread.so.0 [0x25b80e]
  /lib/tls/i686/cmov/libc.so.6 : clone()+0x5e  [0x66b8de]

Original issue reported on code.google.com by [email protected] on 20 Feb 2010 at 4:55

  • Merged into: #38

File asio/detail/eventfd_select_interrupter.hpp missing from libtorrent.0.14.9 package

Download
http://libtorrent.googlecode.com/files/libtorrent-rasterbar-0.14.9.tar.gz

Extract and compile successfully until:

libtool: compile:  g++ -DPACKAGE_NAME=\"libtorrent-rasterbar\"
-DPACKAGE_TARNAME=\"libtorrent-rasterbar\" -DPACKAGE_VERSION=\"0.14.9\"
"-DPACKAGE_STRING=\"libtorrent-rasterbar 0.14.9\""
-DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\"
-DPACKAGE=\"libtorrent-rasterbar\" -DVERSION=\"0.14.9\" -DSTDC_HEADERS=1
-DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1
-DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1
-DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\"
-D_FILE_OFFSET_BITS=64 -DHAVE_PTHREAD=1
-DHAVE___INCLUDE_LIBTORRENT_ASIO_HPP=1
-DHAVE___INCLUDE_LIBTORRENT_ASIO_SSL_STREAM_HPP=1
-DHAVE___INCLUDE_LIBTORRENT_ASIO_IP_TCP_HPP=1 "-DHAVE_BOOST=/**/"
"-DHAVE_BOOST_FILESYSTEM=/**/" "-DHAVE_BOOST_THREAD=/**/"
"-DHAVE_BOOST_REGEX=/**/" "-DHAVE_BOOST_PROGRAM_OPTIONS=/**/"
-DBOOST_ASIO_HASH_MAP_BUCKETS=1021 "-DTORRENT_USE_OPENSSL=/**/"
-DHAVE_LIBZ=1 -DWITH_SHIPPED_GEOIP_H=1 "-DTORRENT_BUILDING_SHARED=/**/"
"-DBOOST_EXCEPTION_DISABLE=/**/" "-DNDEBUG=/**/" -I. -pthread
-I/usr/include -ftemplate-depth-100 -I../include -I../include/libtorrent
-Os -pthread -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION
-I/usr/include/openssl -DHAVE_SSL -g -O2 -MT enum_net.lo -MD -MP -MF
.deps/enum_net.Tpo -c enum_net.cpp  -fPIC -DPIC -o .libs/enum_net.o
In file included from ../include/libtorrent/asio/detail/epoll_reactor.hpp:42,
                 from ../include/libtorrent/asio/impl/io_service.ipp:25,
                 from ../include/libtorrent/asio/io_service.hpp:548,
                 from ../include/libtorrent/asio/basic_io_object.hpp:20,
                 from ../include/libtorrent/asio/basic_socket_acceptor.hpp:20,
                 from ../include/libtorrent/asio/ip/tcp.hpp:20,
                 from ../include/libtorrent/socket.hpp:51,
                 from ../include/libtorrent/enum_net.hpp:37,
                 from enum_net.cpp:36:
../include/libtorrent/asio/detail/select_interrupter.hpp:24:54: error:
asio/detail/eventfd_select_interrupter.hpp: No such file or directory

HTH
Dave

Original issue reported on code.google.com by [email protected] on 20 Feb 2010 at 8:17

Assert fail in piece picker

What steps will reproduce the problem?
1. No apparent action caused the crash.
2.
3.

What is the expected output? What do you see instead?
Should not crash

What version of the product are you using? On what operating system?
version: 0.15.0.0
$Rev: 3323 $

Please provide any additional information below.
version: 0.15.0.0
$Rev: 3323 $
file: 'piece_picker.cpp'
line: 2142
function: void 
libtorrent::piece_picker::write_failed(libtorrent::piece_block)
expression: i != m_downloads.end()
stack:
1: assert_fail(char const*, int, char const*, char const*)
2: libtorrent::piece_picker::write_failed(libtorrent::piece_block)
3: libtorrent::torrent::handle_disk_error(libtorrent::disk_io_job const&, 
libtorrent::peer_connection*)
4: libtorrent::peer_connection::on_disk_write_complete(int, 
libtorrent::disk_io_job const&, libtorrent::peer_request, 
boost::shared_ptr<libtorrent::torrent>)
5: 
boost::detail::function::void_function_obj_invoker2<boost::_bi::bind_t<void, 
boost::_mfi::mf4<void, libtorrent::peer_connection, int, 
libtorrent::disk_io_job const&, libtorrent::peer_request, 
boost::shared_ptr<libtorrent::torrent> >, 
boost::_bi::list5<boost::_bi::value<boost::intrusive_ptr<libtorrent::peer_co
nnection> >, boost::arg<1>, boost::arg<2>, 
boost::_bi::value<libtorrent::peer_request>, 
boost::_bi::value<boost::shared_ptr<libtorrent::torrent> > > >, void, int, 
libtorrent::disk_io_job 
const&>::invoke(boost::detail::function::function_buffer&, int, 
libtorrent::disk_io_job const&)
6: 
boost::asio::detail::handler_queue::handler_wrapper<boost::_bi::bind_t<boost
::_bi::unspecified, boost::function<void ()(int, libtorrent::disk_io_job 
const&)>, boost::_bi::list2<boost::_bi::value<int>, 
boost::_bi::value<libtorrent::disk_io_job> > > 
>::do_call(boost::asio::detail::handler_queue::handler*)
7: 
boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<fals
e> >::run(boost::system::error_code&)
8: libtorrent::aux::session_impl::operator()()
9: 
boost::detail::thread_data<boost::reference_wrapper<libtorrent::aux::session
_impl> >::run()
10: thread_proxy
11: 
12: clone

Program received signal SIGINT, Interrupt.
[Switching to Thread 0xb7476b70 (LWP 30640)]
0x0012d422 in __kernel_vsyscall ()
(gdb) bt 25
#0  0x0012d422 in __kernel_vsyscall ()
#1  0x00e80170 in raise (sig=2)
    at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c:42
#2  0x00abb634 in assert_fail (expr=0xdb4521 "i != m_downloads.end()", 
    line=2142, file=0xdb43a6 "piece_picker.cpp", 
    function=0xdb58c0 "void 
libtorrent::piece_picker::write_failed(libtorrent::piece_block)") at 
assert.cpp:136
#3  0x00bba71f in libtorrent::piece_picker::write_failed (this=0x893e658, 
    block=...) at piece_picker.cpp:2142
#4  0x00c3adcf in libtorrent::torrent::handle_disk_error (this=0x89344b8, 
    j=..., c=0xb53fd710) at torrent.cpp:493
#5  0x00b9b0e1 in libtorrent::peer_connection::on_disk_write_complete (
    this=0xb53fd710, ret=-1, j=..., p=..., t=DWARF-2 expression error: 
DW_OP_reg operations must be used either alone or in conjuction with 
DW_OP_piece.
) at peer_connection.cpp:2267
#6  0x00ba1101 in 
boost::detail::function::void_function_obj_invoker2<boost::_bi::bind_t<void, 
boost::_mfi::mf4<void, libtorrent::peer_connection, int, 
libtorrent::disk_io_job const&, libtorrent::peer_request, 
boost::shared_ptr<libtorrent::torrent> >, 
boost::_bi::list5<boost::_bi::value<boost::intrusive_ptr<libtorrent::peer_co
nnection> >, boost::arg<1>, boost::arg<2>, 
boost::_bi::value<libtorrent::peer_request>, 
boost::_bi::value<boost::shared_ptr<libtorrent::torrent> > > >, void, int, 
libtorrent::disk_io_job 
const&>::invoke(boost::detail::function::function_buffer&, int, 
libtorrent::disk_io_job const&) ()
   from /usr/lib/libtorrent-rasterbar.so.6
#7  0x00af7a2a in 
boost::asio::detail::handler_queue::handler_wrapper<boost::_bi---Type 
<return> to continue, or q <return> to quit---
::bind_t<boost::_bi::unspecified, boost::function<void ()(int, 
libtorrent::disk_io_job const&)>, boost::_bi::list2<boost::_bi::value<int>, 
boost::_bi::value<libtorrent::disk_io_job> > > 
>::do_call(boost::asio::detail::handler_queue::handler*) () from 
/usr/lib/libtorrent-rasterbar.so.6
#8  0x00b20f67 in 
boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<fals
e> >::run(boost::system::error_code&) ()
   from /usr/lib/libtorrent-rasterbar.so.6
#9  0x00be4ba2 in boost::asio::io_service::run (this=0x86ded38)
    at /usr/include/boost/asio/impl/io_service.ipp:65
#10 libtorrent::aux::session_impl::operator() (this=0x86ded38)
    at session_impl.cpp:2372
#11 0x00bf4103 in 
boost::detail::thread_data<boost::reference_wrapper<libtorrent::aux::session
_impl> >::run() () from /usr/lib/libtorrent-rasterbar.so.6
#12 0x01f99ab5 in thread_proxy () from /usr/lib/libboost_thread.so.1.40.0
#13 0x00e778de in start_thread (arg=0xb7476b70) at pthread_create.c:300
#14 0x01ef195e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130
(gdb) 

Original issue reported on code.google.com by [email protected] on 6 Feb 2010 at 1:09

don't delete URL seeds when unreachable

What steps will reproduce the problem?
1. Add a URL seed
2. The URL seed becomes temporarily unavailable
3. Libtorrent removes the URL seed and does not seem to retry it later.

What is the expected output? What do you see instead?
I think that unreachable url seeds should be kept and returned by
torrent_handle::url_seeds() function. I also think that libtorrent should
retry unreachable seeds at regular interval.


What version of the product are you using? On what operating system?
v0.14.x

Please provide any additional information below.
I know the doc says: "url_seeds() return a set of the url seeds currently
in this torrent. Note that urls that fails may be removed automatically
from the list."

I just don't think this behavior is satisfactory. If the URL seeds is
unreachable on addition, then it looks like the action did not work. If it
becomes unreachable later (during download) then it gets permanently
dropped which is not good either (this kind of things happen).

Original issue reported on code.google.com by [email protected] on 27 Jan 2010 at 12:34

pkg-config file problem in 0.14.8

What steps will reproduce the problem?
In FreeBSD the boost libraries need to be specified on the configure
command line a such:
                --with-boost-filesystem=boost_filesystem \
                --with-boost-thread=boost_thread \
                --with-boost-regex=boost_regex \
                --with-boost-program-options=boost_program_options \
There is no way to specify the boost system library with configure, so I
end up with a pkg-config file that looks like this:
Libs.private: -lz  @BOOST_SYSTEM_LIB@

This seems to happen as a result of not having the right sed line in
config.status. See the following:
https://bugs.launchpad.net/qbittorrent/+bug/520686

Doug

Original issue reported on code.google.com by [email protected] on 11 Feb 2010 at 10:51

Libtorrent checking can get stuck

What steps will reproduce the problem?
1. the program crashed so I restarted it
2. Libtorrent started checking the torrents (only two)
3. but checking got stuck, one at 0.0% and the other one at 0.1%
4. I tried to pause one of the two torrents and it crashed.

What is the expected output? What do you see instead?
*************************************************************
Catching SIGABRT, please report a bug at http://bug.qbittorrent.org
and provide the following backtrace:
stack trace:
  [0x2fa400]
  [0x2fa422]
  /lib/tls/i686/cmov/libc.so.6 : gsignal()+0x51  [0x2bf75b1]
  /lib/tls/i686/cmov/libc.so.6 : abort()+0x182  [0x2bfaa12]
  /usr/lib/libtorrent-rasterbar.so.6 : ()+0xf53d9  [0x109b3d9]
  /usr/lib/libtorrent-rasterbar.so.6 : 
libtorrent::disk_io_thread::add_job(libtorrent::disk_io_job const&, 
boost::function<void ()(int, libtorrent::disk_io_job const&)> const&)+0x58  
[0x10c7c68]
  /usr/lib/libtorrent-rasterbar.so.6 : 
libtorrent::disk_io_thread::operator()()+0x1ae7  [0x10d0d87]
  /usr/lib/libtorrent-rasterbar.so.6 : 
boost::detail::thread_data<boost::reference_wrapper<libtorrent::disk_io_thr
ead> >::run()+0x23  [0x10d7ee3]
  /usr/lib/libboost_thread-mt.so.1.38.0 : thread_proxy()+0x5d  [0x5a7c1d]
  /lib/tls/i686/cmov/libpthread.so.0 : ()+0x58de  [0x75b8de]
  /lib/tls/i686/cmov/libc.so.6 : clone()+0x5e  [0x2c9a73e]

What version of the product are you using? On what operating system?
libtorrent v0.15svn (rev 4159)

Please provide any additional information below.
Other users reported the same issue (file checking getting stuck from time 
to time)

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 7:57

torrent::handle::move_storage() does not check exiting files

What steps will reproduce the problem?
1. A torrent is downloaded at place B
2. Remove the torrent from the download list (but do not delete local data)
3. Add the same torrent to the download list and download it to place A
4. You realize you used the wrong save_path so you call move_storage(place 
B)

What is the expected output? What do you see instead?
libtorrent should detect the existing files in the location when the 
storage is moved to and start checking the data. Instead, qBittorrent 
starts downloading from scratch.

What version of the product are you using? On what operating system?
v0.14.7 on Ubuntu v10.04 (ext3 FS)

Please provide any additional information below.
Calling force_recheck() after calling move_storage() does work (it detects 
exiting data) but I don't think I should have to call force_recheck().

Original issue reported on code.google.com by [email protected] on 4 Jan 2010 at 8:55

-lGeoIP is missing in libtorrent.pc

What steps will reproduce the problem?
1. Compile libtorrent with --with-libgeoip in order to use the libgeoip
from the system
2. Install libtorrent
3. libtorrent.pc is missing -lGeoIP in Libs.private section

What is the expected output? What do you see instead?
-lGeoIP should appear in Libs.private section

What version of the product are you using? On what operating system?
v0.14 or v0.15

Please provide any additional information below.

Original issue reported on code.google.com by [email protected] on 9 Feb 2010 at 6:09

'boost::python::error_already_set'

What steps will reproduce the problem?
1. use freebsd, install /usr/ports/net-p2p/deluge
2. start deluged
3. start deluge client
4. add torrent to client

What is the expected output? What do you see instead?
Expect it to add the torrent and work.  Instead program crashes with:
terminate called after throwing an instance of
'boost::python::error_already_set'
Abort trap

What version of the product are you using? On what operating system?
latest ports version that is installed by deluge
/usr/ports/net-p2p/rblibtorrent libtorrent-0.13.tar.gz is it i believe.

Please provide any additional information below.
Everything worked prior to that update.

Original issue reported on code.google.com by [email protected] on 27 Jan 2010 at 9:11

dht socks5 proxy negotiation error

What steps will reproduce the problem?
1.proxy_settings.type=lt.proxy_type.socks5
proxy_settings.hostname='127.0.0.1'
proxy_settings.port=1080 
2.session.set_dht_proxy(proxy_settings)

What is the expected output? What do you see instead?
wait for a little time, call ses.status().dht_nodes, expect return a >0 int
number, and ses.dht_state()['nodes'] isnot null list.
but ht_nodes==0 and dht_state()['nodes']==[] always.

What version of the product are you using? On what operating system?
python-libtorrent-0.14.8.win32, windows xp pro sp3

Please provide any additional information below.
my socks5 proxy use the 3proxy's socks.exe
socks -l -f"L%Y%m%d %H:%M:%S.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
-i127.0.0.1 -e192.168.1.14
set libtorrent dht proxy 127.0.0.1 1080
then dht node number always 0. disable dht proxy, work fine. try another
client, like utorrent, and set same proxy, work fine.
run socketsniff to captrue socks.exe, got some below packets:
1. libtorrent send "05 01 00" to proxy
2. proxy respond "05 00"
3. libtorrent send request "05 01 00 01 8B 9D 40 00 A5 00"
4. proxy get a unknown error
read rfc1928, "05 01 00 01 8B 9D 40 00 A5 00" mean "connect
139.157.64.0:42240",here 139.157.64.0 is a wrong ip-addr. try utorrent, it
would be "05 01 00 01 43 D7 E9 82 00 50", is 67.215.233.130:80 and work
fine. it is a bug?

Original issue reported on code.google.com by [email protected] on 16 Feb 2010 at 9:34

Cannot delete default tracker

What steps will reproduce the problem?
1. Delete a default tracker from a torrent (By default, I mean not defined 
by the user)
2. Restart the session
3. The tracker will appear again

What is the expected output? What do you see instead?
I think the user should be able to delete torrent trackers. For example, 
the piratebay tracker is down and many torrent still include this tracker. 
It can be useful to delete this tracker as we know it will time out.

What version of the product are you using? On what operating system?
at least v0.14.7 (did not test v0.15)

Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 4 Jan 2010 at 4:37

Bandwidth limits don't work for private network ips/trackers

What steps will reproduce the problem?
1. Set a global download limit
2. Add a torrent with a tracker that is on local network (and with peers on
the LAN)
3. libtorrent will use all the bandwidth

What is the expected output? What do you see instead?
Local network connections should be not bypass bandwidth limits

What version of the product are you using? On what operating system?
probably v0.14.8

Please provide any additional information below.
Initial bug report: https://bugs.launchpad.net/qbittorrent/+bug/512356

I don't know if it is actually a bug. I agree that it is not necessarily
interesting to apply the same bandwidth limit on LAN and Internet. Maybe
libtorrent should allow to set different limits for both?

Original issue reported on code.google.com by [email protected] on 25 Jan 2010 at 3:51

Frequent Crash in compare_disconnect_peer

Here is the stack trace: libtorrent-0.14.7 on linux (2.6.9-67.0.7.ELsmp ),
RHEL4
-----
(gdb) bt
#0  0x0000000000488bc2 in libtorrent::(anonymous
namespace)::compare_disconnect_peer ()
#1  0x00000000004b8d84 in
std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator<libtorrent::peer_con
nection**,
std::vector<libtorrent::peer_connection*,
std::allocator<libtorrent::peer_connection*> > >,
libtorrent::peer_connection*, boost::_bi::bind_t<bool, bool
(*)(libtorrent::peer_connection const*, libtorrent::peer_connection
const*), boost::_bi::list2<boost::arg<1> (*)(), boost::arg<2> (*)()> > > ()
#2  0x00000000004bb23b in
std::__final_insertion_sort<__gnu_cxx::__normal_iterator<libtorrent::peer_connec
tion**,
std::vector<libtorrent::peer_connection*,
std::allocator<libtorrent::peer_connection*> > >, boost::_bi::bind_t<bool,
bool (*)(libtorrent::peer_connection const*, libtorrent::peer_connection
const*), boost::_bi::list2<boost::arg<1> (*)(), boost::arg<2> (*)()> > > ()
#3  0x00000000004914ee in libtorrent::torrent::disconnect_peers ()
#4  0x000000000044e702 in libtorrent::aux::session_impl::second_tick ()
#5  0x0000000000474360 in
boost::asio::asio_handler_invoke<boost::asio::detail::binder1<boost::_bi::bind_t
<void,
boost::_mfi::mf1<void, libtorrent::aux::session_impl,
boost::system::error_code const&>,
boost::_bi::list2<boost::_bi::value<libtorrent::aux::session_impl*>,
boost::arg<1> (*)()> >, boost::system::error_code> > ()
#6  0x0000000000474407 in
boost::asio::detail::handler_queue::handler_wrapper<boost::asio::detail::binder1
<boost::_bi::bind_t<void,
boost::_mfi::mf1<void, libtorrent::aux::session_impl,
boost::system::error_code const&>,
boost::_bi::list2<boost::_bi::value<libtorrent::aux::session_impl*>,
boost::arg<1> (*)()> >, boost::system::error_code> >::do_call ()
#7  0x0000000000468bea in
boost::asio::detail::task_io_service<boost::asio::detail::select_reactor<false>
>::run ()
#8  0x0000000000453d70 in libtorrent::aux::session_impl::operator() ()
#9  0x00000000006f1172 in thread_proxy ()
#10 0x0000003a4d606137 in start_thread () from /lib64/tls/libpthread.so.0
#11 0x0000003a4c3c7533 in clone () from /lib64/tls/libc.so.6
----------
Other threads:
(gdb) thread 2
[Switching to thread 2 (process 18355)]#0  0x0000003a4d608b3a in
pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib64/tls/libpthread.so.0
(gdb) bt
#0  0x0000003a4d608b3a in pthread_cond_wait@@GLIBC_2.3.2 () from
/lib64/tls/libpthread.so.0
#1  0x00000000004e5deb in
boost::asio::detail::posix_thread::func<boost::asio::detail::resolver_service<bo
ost::asio::ip::tcp>::work_io_service_runner>::run
()
#2  0x00000000004576cf in asio_detail_posix_thread_function ()
#3  0x0000003a4d606137 in start_thread () from /lib64/tls/libpthread.so.0
#4  0x0000003a4c3c7533 in clone () from /lib64/tls/libc.so.6
(gdb) thread 3
[Switching to thread 3 (process 18353)]#0  0x0000003a4d608b3a in
pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib64/tls/libpthread.so.0
(gdb) bt
#0  0x0000003a4d608b3a in pthread_cond_wait@@GLIBC_2.3.2 () from
/lib64/tls/libpthread.so.0
#1  0x00000000005611cd in libtorrent::disk_io_thread::operator() ()
#2  0x00000000006f1172 in thread_proxy ()
#3  0x0000003a4d606137 in start_thread () from /lib64/tls/libpthread.so.0
#4  0x0000003a4c3c7533 in clone () from /lib64/tls/libc.so.6
(gdb) thread 4
[Switching to thread 4 (process 18351)]#0  0x0000003a4c390025 in
__nanosleep_nocancel () from /lib64/tls/libc.so.6
(gdb) bt
#0  0x0000003a4c390025 in __nanosleep_nocancel () from /lib64/tls/libc.so.6
#1  0x0000003a4c3c0d18 in usleep () from /lib64/tls/libc.so.6
#2  0x0000000000410ffc in main ()




Original issue reported on code.google.com by [email protected] on 18 Feb 2010 at 7:34

v0.14.7 random crash

What steps will reproduce the problem?
1. Random crash after some time running

What is the expected output? What do you see instead?
It should not crash

What version of the product are you using? On what operating system?
Libtorrent v0.14.7 on Fedora 12

Please provide any additional information below.
Initial bug report:
https://bugs.launchpad.net/qbittorrent/+bug/487308

Backtrace:
#0  0x00000038b4f1ab16 in message (this=<value optimized out>)
    at /usr/include/boost/system/error_code.hpp:347
#1  libtorrent::peer_connection::on_receive_data (this=<value optimized 
out>)
    at peer_connection.cpp:3620
#2  0x00000038b4f234f8 in 
boost::asio::detail::handler_queue::handler_wrapper<boost::asio::detail::bi
nder2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, 
libtorrent::peer_connection, boost::system::error_code const&, unsigned 
long>, 
boost::_bi::list3<boost::_bi::value<boost::intrusive_ptr<libtorrent::peer_c
onnection> >, boost::arg<1>, boost::arg<2> > >, boost::system::error_code, 
unsigned long> >::do_call(boost::asio::detail::handler_queue::handler*) ()
   from /usr/lib64/libtorrent-rasterbar.so.5
#3  0x00000038b4f358b9 in 
boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<fal
se> >::run(boost::system::error_code&) ()
   from /usr/lib64/libtorrent-rasterbar.so.5
#4  0x00000038b4f73661 in run (ec=<value optimized out>, this=0xfa1a78)
    at /usr/include/boost/asio/impl/io_service.ipp:65
#5  libtorrent::aux::session_impl::operator() (ec=<value optimized out>, 
this=
    0xfa1a78) at session_impl.cpp:1651
#6  0x000000319520b670 in boost::(anonymous namespace)::thread_proxy (
    param=<value optimized out>) at libs/thread/src/pthread/thread.cpp:130
#7  0x000000395ca06a3a in start_thread (arg=<value optimized out>)
    at pthread_create.c:297
#8  0x000000395c2ddf3d in clone ()

Original issue reported on code.google.com by [email protected] on 22 Dec 2009 at 4:03

Torrent renaming feature in libtorrent 0.15

Some time ago I emailed a question to the mailing list about
torrent_info::files() deprecation status
(http://thread.gmane.org/gmane.network.bit-torrent.libtorrent/2753) and got
the answer
(http://article.gmane.org/gmane.network.bit-torrent.libtorrent/2758) that
said that renaming torrent feature will be introduced in the 0.15. Now
version 0.15 is out but it has no such feature and now there is no way to
rename torrent via libtorrent-0.15 API.

Please implement this feature.

Original issue reported on code.google.com by [email protected] on 22 Mar 2010 at 4:29

file_pool.cpp building error on windows.

What steps will reproduce the problem?
1._WIN32_WINNT=0x0600
2.build revision: 4234 libtorrent.

What is the expected output? What do you see instead?
file_pool.cpp(91) : error C2065: โ€œresultโ€: ๆœชๅฃฐๆ˜Ž็š„ๆ ‡่ฏ†็ฌฆ
file_pool.cpp(92) : error C2065: โ€œPriorityHintโ€: ๆœชๅฃฐๆ˜Ž็š„ๆ ‡่ฏ†็ฌฆ
file_pool.cpp(92) : error C2070: โ€œ'unknown-type'โ€: ้žๆณ•็š„ sizeof 
ๆ“ไฝœๆ•ฐ

What version of the product are you using? On what operating system?
libtorrent: SVN revision: 4234

Please provide any additional information below.

Fix:
/*result = */SetFileInformationByHandle(e.file_ptr-
>native_handle(),FileIoPriorityHintInfo, &priorityHint, 
sizeof(priorityHint));

Original issue reported on code.google.com by [email protected] on 3 Feb 2010 at 11:40

high cpu usage

What steps will reproduce the problem?
1. Use Ubuntu 9.10, 32 bit, with qbittorrent 2.0.5 (PPA)
2. Start two torrents, one slow, one fast
3. Check the output of htop (or similar)

What is the expected output? What do you see instead?
What I see: CPU usage > 90% on dual core AMD Turion

What version of the product are you using? On what operating system?
libtorrent-rasterbar5 (0.14.7+svn.r4133) on Ubuntu 9.10 32 bit

Please provide any additional information below.
strace produces constantly output similar to this:
 - - -
gettimeofday({1262727476, 428648}, NULL) = 0
poll([{fd=3, events=POLLIN}, {fd=11, events=POLLIN|POLLPRI}, {fd=13,
events=POLLIN|POLLPRI}, {fd=14, events=POLLIN|POLLPRI}, {fd=15,
events=POLLIN|POLLPRI}, {fd=16, events=POLLIN}, {fd=17, events=POLLIN},
{fd=18, events=POLLIN}, {fd=19, events=POLLIN}, {fd=7, events=POLLIN},
{fd=40, events=POLLIN}, {fd=8, events=POLLIN}], 12, 0) = 0 (Timeout)
read(7, 0x92813a0, 4096)                = -1 EAGAIN (Resource temporarily
unavailable)
clock_gettime(CLOCK_MONOTONIC, {93537, 249214261}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 249272090}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 249350312}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 249438312}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 249524915}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 249567099}) = 0
read(7, 0x92813a0, 4096)                = -1 EAGAIN (Resource temporarily
unavailable)
read(16, 0x92b5470, 4096)               = -1 EAGAIN (Resource temporarily
unavailable)
gettimeofday({1262727476, 429361}, NULL) = 0
poll([{fd=3, events=POLLIN}, {fd=11, events=POLLIN|POLLPRI}, {fd=13,
events=POLLIN|POLLPRI}, {fd=14, events=POLLIN|POLLPRI}, {fd=15,
events=POLLIN|POLLPRI}, {fd=16, events=POLLIN}, {fd=17, events=POLLIN},
{fd=18, events=POLLIN}, {fd=19, events=POLLIN}, {fd=7, events=POLLIN},
{fd=40, events=POLLIN}, {fd=8, events=POLLIN}], 12, 0) = 0 (Timeout)
read(7, 0x92813a0, 4096)                = -1 EAGAIN (Resource temporarily
unavailable)
clock_gettime(CLOCK_MONOTONIC, {93537, 249931112}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 249993690}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 250073588}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 250162147}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 250249588}) = 0
clock_gettime(CLOCK_MONOTONIC, {93537, 250293169}) = 0
read(7, 0x92813a0, 4096)                = -1 EAGAIN (Resource temporarily
unavailable)
read(16, 0x92b5470, 4096)               = -1 EAGAIN (Resource temporarily
unavailable)
gettimeofday({1262727476, 430022}, NULL) = 0
poll([{fd=3, events=POLLIN}, {fd=11, events=POLLIN|POLLPRI}, {fd=13,
events=POLLIN|POLLPRI}, {fd=14, events=POLLIN|POLLPRI}, {fd=15,
events=POLLIN|POLLPRI}, {fd=16, events=POLLIN}, {fd=17, events=POLLIN},
{fd=18, events=POLLIN}, {fd=19, events=POLLIN}, {fd=7, events=POLLIN},
{fd=40, events=POLLIN}, {fd=8, events=POLLIN}], 12, 0) = 0 (Timeout)
read(7, 0x92813a0, 4096)                = -1 EAGAIN (Resource temporarily
unavailable)
 - - -

Hence, it seems to me that the poll() fails, causing failing read()'s. I
have already failed a but report to qbittorrent page, Christophe Dumez
suspected this could be a problem in libtorrent library.

Original issue reported on code.google.com by [email protected] on 5 Jan 2010 at 10:36

set file_priority for seeding torrents

What steps will reproduce the problem?
1. Download a multi-file torrent but set some files to be ignored
2. Wait for the torrent to complete (reach 100%)
3. You change your mind so you try to download the files you previously ignored
4. Problem: libtorrent does not allow to set the file_priority for seeding
torrents

What is the expected output? What do you see instead?
libtorrent should allow to set file priority for torrents that have a
progress 100% (but with files filtered).

What version of the product are you using? On what operating system?
libtorrent v0.14 or v0.15

Please provide any additional information below.

Original issue reported on code.google.com by [email protected] on 14 Jan 2010 at 4:09

python binding: 'boost::python::error_already_set'

What steps will reproduce the problem?
1. deluged -d

What is the expected output? What do you see instead?
terminate called after throwing an instance of 
'boost::python::error_already_set'

What version of the product are you using? On what operating system?
libtorrent-rasterbar-0.14.8
FreeBSD 8.0-STABLE

Please provide any additional information below.

This problems discussed http://forum.deluge-torrent.org/viewtopic.php?
f=7&t=27915&start=10#p121695
"To clarify, it seems like the error is a problem with libtorrent and not 
with Deluge. Since we do not bundle libtorrent with Deluge any longer, you 
will need to report this problem to libtorrent, http://www.libtorrent.org, 
for resolution."

Original issue reported on code.google.com by [email protected] on 1 Feb 2010 at 5:03

  • Merged into: #24

Additional dependency on geoip-dev

What steps will reproduce the problem?
1. Compile and install libtorrent v0.15
2. Compile a program against libtorrent v0.15 (e.g. qbittorrent)
3. qBittorrent compilation requires geoip-dev headers.

What is the expected output? What do you see instead?
Program built against libtorrent v0.15 should not require geoip-dev

What version of the product are you using? On what operating system?
libtorrent v0.15svn

Please provide any additional information below.
session_impl.hpp:45 : Error: GeoIP.h: file does not exist

If this issue can be fixed easily then it would be nice to do it in order 
to reduce the number of dependencies. If not, it is still ok.

Original issue reported on code.google.com by [email protected] on 12 Jan 2010 at 9:54

invariant check hit in disk_io_thread.cpp

What steps will reproduce the problem?
1. Happened when deleting a torrent (including local files)
2.
3.

What is the expected output? What do you see instead?
No crash

What version of the product are you using? On what operating system?
version: 0.15.0.0
$Rev: 3323 $

Please provide any additional information below.
version: 0.15.0.0
$Rev: 3323 $
file: 'disk_io_thread.cpp'
line: 1048
function: void libtorrent::disk_io_thread::check_invariant() const
expression: cached_read_blocks + cached_write_blocks ==
m_cache_stats.cache_size
stack:
1: assert_fail(char const*, int, char const*, char const*)
2: libtorrent::disk_io_thread::check_invariant() const
3:
libtorrent::invariant_checker_impl<libtorrent::disk_io_thread>::~invariant_check
er_impl()
4: libtorrent::disk_io_thread::operator()()
5:
boost::detail::thread_data<boost::reference_wrapper<libtorrent::disk_io_thread>
>::run()
6: thread_proxy
7: 
8: clone

Original issue reported on code.google.com by [email protected] on 9 Feb 2010 at 7:58

magnet links becomes unpaused on restart

What steps will reproduce the problem?
1. Add a magnet link to the list
2. Pause the torrent
3. Restart the application

What is the expected output? What do you see instead?
The torrent no longer appear as paused on restart although it was paused on 
exit.

What version of the product are you using? On what operating system?
Latest RC_0_14 svn on Ubuntu v9.10 Karmic

Please provide any additional information below.
Here is the backtrace:
(gdb) bt 25
#0  0x00338422 in __kernel_vsyscall ()
#1  0x00ef7f50 in raise (sig=2) at ../nptl/sysdeps/unix/sysv/linux/pt-
raise.c:42
#2  0x01039be4 in assert_fail (expr=0x1298f7e "num_peers() == 0", 
line=3663, file=0x1358f21 "torrent.cpp", 
    function=0x129b840 "void libtorrent::torrent::check_invariant() const") 
at assert.cpp:132
#3  0x011042f4 in libtorrent::torrent::check_invariant (this=0x8cc4b48) at 
torrent.cpp:3663
#4  0x01135c6f in 
libtorrent::invariant_checker_impl<libtorrent::torrent>::~invariant_checker
_impl() () from /usr/lib/libtorrent-rasterbar.so.5
#5  0x01121e0b in libtorrent::torrent::set_metadata (this=0x8cc4b48, 
metadata=..., error=...) at torrent.cpp:3093
#6  0x011f5143 in received_metadata (this=0xb6300a68, length=16161, 
extended_msg=15, body=...) at ut_metadata.cpp:164
#7  on_extended (this=0xb6300a68, length=16161, extended_msg=15, body=...) 
at ut_metadata.cpp:367
#8  0x0108a192 in libtorrent::bt_peer_connection::on_extended 
(this=0xb506ada0, received=8) at bt_peer_connection.cpp:1292
#9  0x0108a84d in libtorrent::bt_peer_connection::dispatch_message 
(this=0xb506ada0, received=8) at bt_peer_connection.cpp:1426
#10 0x0108cfa3 in libtorrent::bt_peer_connection::on_receive 
(this=0xb506ada0, error=..., bytes_transferred=8) at 
bt_peer_connection.cpp:2643
#11 0x0105fe28 in libtorrent::peer_connection::on_receive_data 
(this=0xb506ada0, error=..., bytes_transferred=8) at 
peer_connection.cpp:3644
#12 0x01066248 in 
boost::asio::detail::handler_queue::handler_wrapper<boost::asio::detail::bi
nder2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, 
libtorrent::peer_connection, boost::system::error_code const&, unsigned 
int>, 
boost::_bi::list3<boost::_bi::value<boost::intrusive_ptr<libtorrent::peer_c
onnection> >, boost::arg<1>, boost::arg<2> > >, boost::system::error_code, 
unsigned int> >::do_call(boost::asio::detail::handler_queue::handler*) ()
   from /usr/lib/libtorrent-rasterbar.so.5
#13 0x0107bd98 in 
boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<fal
se> >::run(boost::system::error_code&) ()
   from /usr/lib/libtorrent-rasterbar.so.5
#14 0x010d2baa in boost::asio::io_service::run (this=0x86b64e0) at 
/usr/include/boost/asio/impl/io_service.ipp:65
#15 libtorrent::aux::session_impl::operator() (this=0x86b64e0) at 
session_impl.cpp:1654
#16 0x010e39c3 in 
boost::detail::thread_data<boost::reference_wrapper<libtorrent::aux::sessio
n_impl> >::run() () from /usr/lib/libtorrent-rasterbar.so.5
#17 0x00868ab5 in thread_proxy () from /usr/lib/libboost_thread.so.1.40.0
#18 0x00eef80e in start_thread (arg=0xb748bb70) at pthread_create.c:300
#19 0x0655a93e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Original issue reported on code.google.com by [email protected] on 22 Dec 2009 at 2:50

Listen_failed_alert with port==0

Some users report receiving listen_failed_alerts with port (p-
>endpoint.port()) == 0.

How can this be possible? I got one example, the user uses 6881/TCP for BT 
and 6881/UDP for DHT and he received this alert.
Since the DHT port is the same as the BT port, I do pass 
dht_settings.service_port = 0 to session.set_dht_settings. Could this be 
linked?

WHat is also strange is that the user gets this alert 3 times in a row, 
within 1 second interval.

Another related question, can we get a listen_failed_alert related to DHT? 
I always thought this was not possible since the endpoint in the alert is a 
TCP one and the doc does not refer to DHT either.


What version of the product are you using? On what operating system?
FreeBSD 8.0

Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 29 Dec 2009 at 9:30

force_reannounce and next announce information at tracker level

What steps will reproduce the problem?
1. libtorrent currently provide next_announce_time and force_reannounce()
only at torrent level

What is the expected output? What do you see instead?
I think it would be nice to have this information at tracker level (as in
uTorrent) if possible.

What version of the product are you using? On what operating system?
v0.15

Please provide any additional information below.

Original issue reported on code.google.com by [email protected] on 15 Jan 2010 at 4:54

disk_io_thread assert on startup

What steps will reproduce the problem?
1. libtorrent now crashes on startup for some reason
2.
3.

What is the expected output? What do you see instead?
should not crash

What version of the product are you using? On what operating system?
libtorrent v0.15svn

Please provide any additional information below.
version: 0.15.0.0
$Rev: 3323 $
file: 'disk_io_thread.cpp'
line: 1269
function: void libtorrent::disk_io_thread::add_job(const 
libtorrent::disk_io_job&, const boost::function<void(int, const 
libtorrent::disk_io_job&)>&)
expression: !j.callback
stack:
1: assert_fail(char const*, int, char const*, char const*)
2: libtorrent::disk_io_thread::add_job(libtorrent::disk_io_job const&, 
boost::function<void ()(int, libtorrent::disk_io_job const&)> const&)
3: libtorrent::disk_io_thread::operator()()
4: 
boost::detail::thread_data<boost::reference_wrapper<libtorrent::disk_io_thr
ead> >::run()
5: thread_proxy
6: 
7: clone

Program received signal SIGINT, Interrupt.
[Switching to Thread 0xb7c91b70 (LWP 24188)]
0x00c4c422 in __kernel_vsyscall ()
(gdb) bt 25
#0  0x00c4c422 in __kernel_vsyscall ()
#1  0x0097a170 in raise (sig=2)
    at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c:42
#2  0x00f3e3d4 in assert_fail (expr=0x116efdb "!j.callback", line=1269, 
    file=0x116ef49 "disk_io_thread.cpp", 
    function=0x1170160 "void libtorrent::disk_io_thread::add_job(const 
libtorrent::disk_io_job&, const boost::function<void(int, const 
libtorrent::disk_io_job&)>&)") at assert.cpp:136
#3  0x00f6ac68 in 
libtorrent::disk_io_thread::add_job(libtorrent::disk_io_job const&, 
boost::function<void ()(int, libtorrent::disk_io_job const&)> const&) (
    this=0x8688428, j=..., f=...) at disk_io_thread.cpp:1269
#4  0x00f73d87 in libtorrent::disk_io_thread::operator() (this=0x8688428)
    at disk_io_thread.cpp:2053
#5  0x00f7aee3 in 
boost::detail::thread_data<boost::reference_wrapper<libtorrent::disk_io_thr
ead> >::run() () from /usr/lib/libtorrent-rasterbar.so.6
#6  0x00920c1d in thread_proxy () from /usr/lib/libboost_thread-
mt.so.1.38.0
#7  0x009718de in start_thread (arg=0xb7c91b70) at pthread_create.c:300
#8  0x03f4173e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 10:06

"Modify time" attribute of siding files

When qBittorrent (bittorrent client, using libtorrent) starts it changing
"modify time" attribute of siding files, but they are not changed.
Such behaviour forced file recheck in other p2p software, like eiskaltdc++

What steps will reproduce the problem?
1. Start application, used libtorrent
2. Look to modify time attribute of siding files - it changed to current time

What is the expected output? What do you see instead?
If files realy not changed, "modify  time" attribute should not be changed

What version of the product are you using? On what operating system?
libtorrent 0.15 svn r4330, Gentoo Linux 2.6.33 x86_64

Original issue reported on code.google.com by [email protected] on 5 Mar 2010 at 3:43

Assertion failed during startup

Normal kind of startup, occasional random failure

assertion failed. Please file a bugreport at
http://code.rasterbar.com/libtorrent/newticket
Please include the following information:

version: 0.15.0.0
$Rev: 3323 $
file: 'bt_peer_connection.cpp'
line: 2760
function: virtual void libtorrent::bt_peer_connection::on_receive(const
boost::system::error_code&, size_t)
expression: t->get_policy().has_connection(this)
stack:
1: ./td [0x808c6c3]
2: ./td [0x81c2a84]
3: ./td [0x824e93d]
4: ./td [0x8253117]
5: ./td [0x80cd9f7]
6: ./td [0x80b3835]
7: thread_proxy
8: /lib/libpthread.so.0 [0xb754442f]
9: clone


Original issue reported on code.google.com by [email protected] on 8 Mar 2010 at 4:43

is num_peer in tracker_reply_alert correct?

What steps will reproduce the problem?
1. Add a torrent to the session
2. libtorrent will scrape the tracker and get values such as( 1082 seeds /
180 peers)
3. the Tracker(s) will reply and libtorrent will send an alert with a
num_peers value such as 50.
4. num_peers in tracker_reply_alert seems to be really different from
scrape information (and round values such as 50 or 200, no matter what the
scrape values are).

What is the expected output? What do you see instead?
I would expect num_peers to be close to the values returned during scrape.
I would also expect num_peers to change more. It seems I always get 50 or
200 and it does not change over time.

What version of the product are you using? On what operating system?
v0.15 (same with v0.14)

Please provide any additional information below.

Original issue reported on code.google.com by [email protected] on 26 Jan 2010 at 6:38

HTTP Seed Bad HTTP request

What steps will reproduce the problem?
1.open actual filesize >2 Gbyte torrent file(single file torrent).
2.add the webseed url to download.

What is the expected output? What do you see instead?
The web server got many bad request with wrong size range like "xxxxxxx--
xxxxxxx".

What version of the product are you using? On what operating system?
0.14.8

Please provide any additional information below.

the web_peer_connection.cpp file at line 255,"to_string(r.piece * 
info.piece_length() + r.start + r.length - 1).elems;"
size_type()conversion missing.

fixed:
"to_string(size_type(r.piece) * info.piece_length() + r.start + r.length - 
1).elems;"

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 7:16

Add downloading_pieces to torrent_status

What steps will reproduce the problem?
There is currently a bitfield called "pieces" in torrent_status that
indicates the pieces that we already have.
I think it would be nice to have another bitfield called
"downloading_pieces" that specifies the pieces that are currently being
downloaded.

What is the expected output? What do you see instead?
I currently display a progress bar similar to the one in uTorrent with
downloaded pieces in a given color. I would like to show currently
downloading pieces by changing their color too.

What version of the product are you using? On what operating system?
v0.15

Please provide any additional information below.

Original issue reported on code.google.com by [email protected] on 18 Mar 2010 at 8:11

Crash on startup (DHT/upnp::delete_mapping)

What steps will reproduce the problem?
1. Call set_dht_settings() on startup
2. it crashes when deleting UPnP mapping

What is the expected output? What do you see instead?
 /lib/tls/i686/cmov/libpthread.so.0 : pthread_mutex_lock()+0x1d [0x3f6d1d]
  /usr/lib/libtorrent-rasterbar.so.5 : 
boost::unique_lock<boost::mutex>::unique_lock(boost::mutex&)+0x2b 
[0x11087fb]
  /usr/lib/libtorrent-rasterbar.so.5 : 
libtorrent::upnp::delete_mapping(int)+0x2f [0x11f4e0f]
  /usr/lib/libtorrent-rasterbar.so.5 : 
libtorrent::aux::session_impl::set_dht_settings(libtorrent::dht_settings 
const&)+0x9a [0x112189a]
  /usr/lib/libtorrent-rasterbar.so.5 : 
libtorrent::session::set_dht_settings(libtorrent::dht_settings const&)+0x27 
[0x111c157]
  qbittorrent : Bittorrent::setDHTPort(int)+0x3d [0x80eb9dd]
  qbittorrent : Bittorrent::configureSession()+0x3d65 [0x81073c5]
  qbittorrent : Bittorrent::Bittorrent()+0x519 [0x810a9a9]
  qbittorrent : GUI::GUI(QWidget*, QStringList)+0x929 [0x809c419]
  qbittorrent : main()+0x1002 [0x80b3352]
  /lib/tls/i686/cmov/libc.so.6 : __libc_start_main()+0xe6 [0x84afb56]
  qbittorrent [0x80907e1]

What version of the product are you using? On what operating system?
Ubuntu Karmic v9.10 32bits

Please provide any additional information below.
Initial bug report was here: 
https://bugs.launchpad.net/qbittorrent/+bug/499439

Original issue reported on code.google.com by [email protected] on 22 Dec 2009 at 2:21

Add uTP support

What steps will reproduce the problem?
1. libtorrent does not support uTP

What is the expected output? What do you see instead?
I think libtorrent should support uTP, is this planned?

What version of the product are you using? On what operating system?
Any

Please provide any additional information below.
http://bittorrent.org/beps/bep_0029.html

Original issue reported on code.google.com by [email protected] on 4 Jan 2010 at 12:13

Peer transfer limitation not remembered

What steps will reproduce the problem?
1. Set a download (or upload) rate limit for a particular peer
2. The peer disconnects and then reconnects later
3. The rate limit is reset

What is the expected output? What do you see instead?
The rate limit should be remembered for a particular peer IP, at least for 
the whole session.

What version of the product are you using? On what operating system?


Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 29 Dec 2009 at 9:38

Fast-Resume is very slow with preallocate all file enabled.

What steps will reproduce the problem?
1.Add some complete torrents to seed,wait for them to finish checking.
2.Enable preallocate all file.
3.Restart the program.

What is the expected output? 
When the program restart, the fast-resume process should be very fast. 

What do you see instead?
When the program restart, the fast-resume process is very slow(>10 times
slower). 

What version of the product are you using? On what operating system?
QBittorrent 2.10  compiled with Libtorrent 0.15svn4157 in Ubuntu 9.10

Please provide any additional information below.
1. If I disable preallocate all file then the fast-resume process is very fast.
2. QBittorrent 2.10 compiled with libtorrent 0.14.x does not have this bug,
so I think this is a bug in libtorrent 0.15.
3. I believe QBittorrent use storage_mode_allocate to preallocate all file.

Original issue reported on code.google.com by [email protected] on 14 Jan 2010 at 10:23

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.