PieceMgr assertion failure #3

Closed
jlouis opened this Issue Mar 27, 2010 · 5 comments

Projects

None yet

1 participant

@jlouis
Owner
jlouis commented Mar 27, 2010
"PieceMgrP"(Fatal): Process exiting due to ex: user error (P/Blk (655,Block {blockOffset = 81920, blockSize = 16384}) is in the HaveBlocks set)
"ConsoleP"(Info):   Process Terminated by Supervisor

This bug manifests itself from a failure in the PieceManager. Specifically, the above is an assertion failure because there is a block both in the set of blocks we have and blocks we are currently downloading. It may be stray blocks which is a part of the bittorrent protocol without the FAST extension.

@jlouis
Owner
jlouis commented Mar 30, 2010

I've been digging in the code, but the error eludes me. I think the best bet currently is to write a Tracer and then trace what happens in the process. That way we can reconstruct what is happening.

@jlouis
Owner
jlouis commented Apr 4, 2010

The tracer found something. Question is if I can make anything out of it :)

@jlouis
Owner
jlouis commented Apr 4, 2010

This is easy: putBackBlock does not take endgaming into account and thus the problem is that another peer might have downloaded the piece in question. When that happens it is already moved to the have set, but putBackBlock now adds it to the pending set. This is of course wrong.

@jlouis
Owner
jlouis commented Apr 4, 2010

Fixed.

@jlouis
Owner
jlouis commented Apr 6, 2010

This beast reared its ugly head again. New trace found.

@jlouis jlouis pushed a commit that closed this issue Jul 7, 2012
@nikmikov nikmikov fixes #3 ede7ba0
@jlouis jlouis closed this in ede7ba0 Jul 7, 2012
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment