Well, I assumed in this case that the memory corruption caused a corruption of a vector size which is written directly into the savegame and causes the problems when it is reread.
The problem happens in this function:
ReadStreamableFFreeListTrashArray(m_voteSelections, pStream);
when it calls this:
void VoteSelectionData::read(FDataStreamBase* pStream)
In there this line results in a large negative number for iSize:
WRAPPER_READ_DECORATED(wrapper, "VoteSelectionData",&iSize,"aVoteOption.size");
Actually, now that I think some more about it, it could also just not be in the save game so the uninitialized value is used which explains why sometimes you get 0 selections, sometimes several and sometimes it crashes (too many empty selections I guess).
The question is why it has not been written then. The write function does not look like it can only write parts so maybe the problem is in ReadStreamableFFreeListTrashArray vs. WriteStreamableFFreeListTrashArray.