X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fconsumer.c;h=ec59401053a18bf510c2748fff843b137e5ccee2;hb=61076f74f9e7ae286fe140d82ed0ac86895e3690;hp=b605591e478a1c2a40dd13a25228bd2ad80bc684;hpb=ca4537d385628d3568a918409d909d3042ca7a38;p=lttng-tools.git diff --git a/src/common/consumer.c b/src/common/consumer.c index b605591e4..ec5940105 100644 --- a/src/common/consumer.c +++ b/src/common/consumer.c @@ -492,8 +492,15 @@ int lttng_consumer_poll_socket(struct pollfd *consumer_sockpoll) { int num_rdy; +restart: num_rdy = poll(consumer_sockpoll, 2, -1); if (num_rdy == -1) { + /* + * Restart interrupted system call. + */ + if (errno == EINTR) { + goto restart; + } perror("Poll error"); goto exit; } @@ -896,10 +903,17 @@ void *lttng_consumer_thread_poll_fds(void *data) pthread_mutex_unlock(&consumer_data.lock); /* poll on the array of fds */ + restart: DBG("polling on %d fd", nb_fd + 1); num_rdy = poll(pollfd, nb_fd + 1, consumer_poll_timeout); DBG("poll num_rdy : %d", num_rdy); if (num_rdy == -1) { + /* + * Restart interrupted system call. + */ + if (errno == EINTR) { + goto restart; + } perror("Poll error"); lttng_consumer_send_error(ctx, CONSUMERD_POLL_ERROR); goto end;