Good catch! It looks like the reset() method in cStringIO.StringIO sets the file position back to zero but does not reset the file size. I thought it did both. So each pickle in a data record will be at least the size of the largest pickle that has come before it. I'll fix shortly. Jeremy