As segwit is active on testnet, blocks will only be downloaded from NODE_WITNESS peers. Though, exactly those peers are disconnected after `BLOCK_STALLING_TIMEOUT = 2` seconds. I am running master (6e6ab2c)

This behavior is consistent across restarts. Sample [debug.log](http://pastebin.ubuntu.com/23058327/) and [getchaintips](http://pastebin.ubuntu.com/23058325/).

It is possible that I shot my own foot at some point, but it seemed smelly enough to create an issue.

{
    
    if (!tx.IsCoinBase()) {
        txundo.vprevout.reserve(tx.vin.size());
        BOOST_FOREACH(const CTxIn &txin, tx.vin) {
            CCoinsModifier coins = inputs.ModifyCoins(txin.prevout.hash);
            unsigned nPos = txin.prevout.n;
            if (nPos >= coins->vout.size() || coins->vout[nPos].IsNull())
                assert(false);
            
            txundo.vprevout.push_back(CTxInUndo(coins->vout[nPos]));
            coins->Spend(nPos);
            if (coins->vout.size() == 0) {
                CTxInUndo& undo = txundo.vprevout.back();
                undo.nHeight = coins->nHeight;
                undo.fCoinBase = coins->fCoinBase;
                undo.nVersion = coins->nVersion;
            }
        }
    }
    
    inputs.ModifyNewCoins(tx.GetHash(), tx.IsCoinBase())->FromTx(tx, nHeight);
}
void UpdateCoins(const CTransaction& tx, CCoinsViewCache& inputs, int nHeight)