I have a similar problem. I used the bulk dma manual in/out, and if the host does a read (Ubuntu) before any writes, which returns zero bytes and fail, and then do a write followed by read, the read and all subsequent reads fail. But on Windows, it is fine.
I'm starting to wonder if there is some incompatibility between libusb and FX3.
Did you ever solve your problem?
Not yet, no. We just encountered it a few days ago and for now implemented a workaround in our software (limit the number of writes if there was no read).
I could reproduce your behavior with the dma manual in/out image. Strangely enough, after the first write/read fails, the next write works again (sequence: read (fail), write(fail), read(timeout), write(works), read(works) )