drmemtrace offline assumes blocks always complete which is broken by asynch thread relocation
drmemtrace's offline instrumentation records one entry at the top of a block and assumes every instruction in that block will then execute. If we have an asynchronous thread relocation (from a synchronous flush, or a reset, or a detach) that finds a safe spot in the middle of the block (any app instr will do; xref a to-be-filed issue on expanding safe spots for client instru; clean calls will do despite their xl8 shortcomings #4912), we'll have not only that promise of all instructions but for a load or store drmemtrace will have recorded its address yet it may not actually execute. Then upon relocation, if it's not detach, the tail block will execute the load/store and duplicate the address. raw2trace will be very confused as it will expect all memrefs in the interrupted block.
One solution could be for DR to provide an event on thread relocation. The client can't tell from the state restore event whether relocation will happen: maybe that could be expanded.