The read and pread syscalls are permitted to return fewer bytes than requested (unlike the fread libc call which will only perform a short read on error or EOF). This is most likely to occur when binaries are located on slower filesystems (e.g. NFS or 9pfs)
Are you sure that it actually the case for disk files? I think read (and pread is specced to be an equivalent for read with the only difference that file offset is provided) should never result in short read for disk files unless it is end of file or the read buffer is not fully accessible for write. I also think that virtually no Unix (or Windows for similar functions) program expects short reads when dealing with disk file I/O. So if that is the case with NFS Linux driver or with 9pfs that should probably be treated as a bug in those drivers.