Eric,
I now tested you 2 "async split" patches on a pristine 1.1.31, i.e. without any of my patches. It is a good idea and astep in the right direction. The next step would be to move all possible tests before the split point, e.g. return OUTOFRANGE for bad positions.
However, it still hangs in the full tests. I believe the last bug in mciwave will only be nailed down once the play and record loops manage to talk robustly with other commands such as pause and close.
E.g., I added calls to mciStop at the top of Play and Resume. It still hangs, proving that the problem is not at start, but within playing/recording.
Regards, Jörg Höhle.