rearranged some stuff in the logger, apparently .send must have .recv, which the opposite is also true, making a .send and .recv on the same rank impossible. Also, since an isend can happen quickly, it appears that the logger loop will get the correct number of .isent objects, but only receiv the latest (so, if i isend 'hi', 'hello', 'bye', really quickly, 'bye' will print 3 times). The logger thread now has a list for backlog from the same process, it doesn't have a lock to make sure the array is properly appended, so it could be better.