Seemingly somewhere we erroneously throw a CFormat object where we used to throw wxString. The latter would have been catched, but we don't expect the former.
The bad thing with uncaught exceptions is that we can't find out where they came from (because the stack is already unwinded).
The following change might be the cause:
@@ -1244,7 +1244,7 @@ void CKademliaUDPListener::ProcessPublishResponse(const uint8_t *packetData, uin
void CKademliaUDPListener::Process2PublishResponse(const uint8_t *packetData, uint32_t lenPacket, uint32_t ip, uint16_t port, const CKadUDPKey& senderKey)
{
if (!IsOnOutTrackList(ip, KADEMLIA2_PUBLISH_KEY_REQ) && !IsOnOutTrackList(ip, KADEMLIA2_PUBLISH_SOURCE_REQ) && !IsOnOutTrackList(ip, KADEMLIA2_PUBLISH_NOTES_REQ)) {
- throw wxString::Format(wxT("***NOTE: Received unrequested response packet, size (%u) in "), lenPacket) + wxString::FromAscii(__FUNCTION__);
+ throw (CFormat(wxT("***NOTE: Received unrequested response packet, size (%u) in %s")) % lenPacket % wxString::FromAscii(__FUNCTION__));
}
CMemFile bio(packetData, lenPacket);
CUInt128 file = bio.ReadUInt128();
Until it's fixed disabling Kademlia should make the problem go away.