After `grep -E "errors|warnings" myfifo > errors.log` the pipe no longer contains data. So the next command `cat myfifo` which read from the pipe will be blocked.