The original symptom I was having was that because _pread() was returning a number less than -1, read() was returning a negative number less than -1 (which it should never do). I just left that assert there to catch if it ever did it again. Anything less than -1 is an error in implementation.