Just updated a node to current master (+https://github.com/bitcoin/bitcoin/pull/7685), the node ran successfully for a couple of weeks, shortly after updating to current master, I ran in a deadlock assertion:
I think the possible deadlock is not related to the PR which I'm running on top.

```
2016-08-26 07:50:29 POTENTIAL DEADLOCK DETECTED
2016-08-26 07:50:29 Previous lock order was:
2016-08-26 07:50:29  pnode->cs_vRecvMsg  net.cpp:1885 (TRY)
2016-08-26 07:50:29  cs_main  main.cpp:4726
2016-08-26 07:50:29  (1) pfrom->cs_filter  main.cpp:4784
2016-08-26 07:50:29  (2) cs_vSend  net.cpp:2683
2016-08-26 07:50:29 Current lock order is:
2016-08-26 07:50:29  (2) pnode->cs_vSend  net.cpp:1904 (TRY)
2016-08-26 07:50:29  cs_main  main.cpp:6343 (TRY)
2016-08-26 07:50:29  pto->cs_inventory  main.cpp:6563
2016-08-26 07:50:29  (1) pto->cs_filter  main.cpp:6586
```

{
            LogPrintf("connected to self at %s, disconnecting\n", pfrom->addr.ToString());
            pfrom->fDisconnect = true;
            return true;
        }
        pfrom->addrLocal = addrMe;
        if (pfrom->fInbound && addrMe.IsRoutable())
        {
            SeenLocal(addrMe);
        }
        
        if (pfrom->fInbound)
            pfrom->PushVersion();
        pfrom->fClient = !(pfrom->nServices & NODE_NETWORK);
        if((pfrom->nServices & NODE_WITNESS))
        {
            LOCK(cs_main);
            State(pfrom->GetId())->fHaveWitness = true;
        }
        
        {
        LOCK(cs_main);
        UpdatePreferredDownload(pfrom, State(pfrom->GetId()));
        }
        
        pfrom->PushMessage(NetMsgType::VERACK);
        pfrom->ssSend.SetVersion(min(pfrom->nVersion, PROTOCOL_VERSION));
        if (!pfrom->fInbound)
        {