When using --poll, move_data() returns -1 and errno is set to EAGAIN. This causes the record threads to stop recording. Fix it by returning to the read loop in case EAGAIN, if --poll is specified. Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> diff --git a/lib/trace-cmd/trace-recorder.c b/lib/trace-cmd/trace-recorder.c index 70ce52e..0633edf 100644 --- a/lib/trace-cmd/trace-recorder.c +++ b/lib/trace-cmd/trace-recorder.c @@ -421,6 +421,9 @@ int tracecmd_start_recording(struct tracecmd_recorder *recorder, unsigned long s if (ret < 0) { if (errno == EINTR) continue; + if ((recorder->flags & TRACECMD_RECORD_POLL) && + errno == EAGAIN) + continue; return ret; } read += ret;