Yes - you save in the memory stream, leaving it at the end. You need to "rewind" it with:
ms.Position = 0;
before creation StreamReader:
xm.Serialize(ms, _bugs);
ms.Position = 0;
StreamReader sr = new StreamReader(ms);
string str = sr.ReadToEnd();
However, you need to rewind it again before loading in XmlDocument, unless you delete these last two lines, which I suspect were for debugging only. For a good measure, also close the memory stream when we are done with it:
using (MemoryStream stream = new MemoryStream())
{
XmlSerializer serializer = new XmlSerializer(typeof(List<BugWrapper>));
seralizer.Serialize(stream, _bugs);
stream.Position = 0;
XmlDocument doc = new XmlDocument();
doc.Load(stream);
}