logo       

On the logic of the file checking: msg#00038

network.bit-torrent.libtorrent

Subject: On the logic of the file checking

Hi everyone,

We've been so happy using libtorrent, having everything going smooth
and good, before we suddenly bumped into some strange problem.

Before we met the problem, we just download each file... then one day
the downloading is quite ok to us, so we try to seed the file. Seeding
is quite ok before we close the program and restart it. When we
restart the program with no resume data, the program crashes due to
the failure of an assertion.

// if we're not in compact mode, make sure the
// pieces are spread out and placed at their
// final position.
assert(!m_unallocated_slots.empty()); // Line 1401,
storage.cpp, version 0.9.1

We tracked the code and found that when the "do the full check part"
is about to end, it changes the state to allocating. Then the
check_files() function is again called, the assertion fails quite
reasonably: we have already downloaded the file, there is nothing
unallocated! It seems to me a flaw in the logic, though I still don't
quite follow it since I'm not really reading the compact mode code.
BTW, we're not using the compact mode.

I diff'ed the storage.cpp's of the two versions, 0.9.1 and 0.9.2, the
logic seems the same so we didn't try the newer version.

We'll be so grateful if anyone solves the myth for us,

Yichao
Rȧ�:&q�[���y�hv����^y�h��i��py����z�r���!���n}�h�ꮉ�%����ފ{^���y�^r薈2����쨺��m欉�ã
塧HŞm*az����bq�b�t�����]5m�v����!xg��x��m���zV���ږF�����\�
<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise