Theoretical bullshit
They basically admit it in the paper, this simply doesn't work in the real world. Essentially any program which uses a call like select() to non-deterministically wait on input from outside the process entirely blows up their attempt to make thread runs deterministic. While is... er... every useful program in the entire world. Their hack around to reduce these programs to the simple threading model they can work with essentially destroys the advantage to threading in the first place.
Hell, the whole system requires that programmers can correctly identify critical sections in their code and flag them with synchronisation primitives like pthread_mutex_lock()/_unlock() pairs. If you're relying on them to know that much, then surely you can rely on them to understand what a race condition is, and what happens when you change the execution order of two or more critical sections.