It seems that bitcoin{d,-qt} can be crashed by being sent an inv of an unknown type. At least, it caused mine to:-
2016-11-08 00:45:36.470 ProcessMessages(getdata, 397 bytes): CHECKSUM ERROR expected=6d9dbcdf was=a1046737 peer=39585
2016-11-08 00:45:36.481
************************
EXCEPTION: St12out_of_range
CInv::GetCommand(): type=1373179482 unknown type
bitcoin in ProcessMessages()
2016-11-08 00:45:36.482 ProcessMessages(getdata, 397 bytes) FAILED peer=39585
2016-11-08 00:45:36.487
************************
EXCEPTION: St12out_of_range
CInv::GetCommand(): type=1373179482 unknown type
bitcoin in msghand
If the throw std::out_of_range(strprintf("CInv::GetCommand(): type=%d unknown type", type)); in protocol.cpp supposed to cause the program to end?