X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Flive.c;h=ed52012407be36ef76a04d1c494a028d148bf6cd;hp=fd570e0fc4bd801ebe065e5fd32b2f1c7780323f;hb=93b4787b203ca4286c29ed484684ed34c3c8fe5d;hpb=b4aacfdce9fe9fddc01b738a8cc807d764245cef diff --git a/src/bin/lttng-relayd/live.c b/src/bin/lttng-relayd/live.c index fd570e0fc..ed5201240 100644 --- a/src/bin/lttng-relayd/live.c +++ b/src/bin/lttng-relayd/live.c @@ -488,6 +488,11 @@ restart: revents = LTTNG_POLL_GETEV(&events, i); pollfd = LTTNG_POLL_GETFD(&events, i); + if (!revents) { + /* No activity for this FD (poll implementation). */ + continue; + } + /* Thread quit pipe has been closed. Killing thread. */ ret = check_thread_quit_pipe(pollfd, revents); if (ret) { @@ -707,7 +712,12 @@ int viewer_connect(struct relay_connection *conn) reply.major = htobe32(reply.major); reply.minor = htobe32(reply.minor); if (conn->type == RELAY_VIEWER_COMMAND) { - reply.viewer_session_id = htobe64(++last_relay_viewer_session_id); + /* + * Increment outside of htobe64 macro, because can be used more than once + * within the macro, and thus the operation may be undefined. + */ + last_relay_viewer_session_id++; + reply.viewer_session_id = htobe64(last_relay_viewer_session_id); } health_code_update(); @@ -1922,6 +1932,11 @@ restart: health_code_update(); + if (!revents) { + /* No activity for this FD (poll implementation). */ + continue; + } + /* Thread quit pipe has been closed. Killing thread. */ ret = check_thread_quit_pipe(pollfd, revents); if (ret) { @@ -2092,7 +2107,10 @@ int relayd_live_create(struct lttng_uri *uri, cds_wfcq_init(&viewer_conn_queue.head, &viewer_conn_queue.tail); /* Set up max poll set size */ - lttng_poll_set_max_size(); + if (lttng_poll_set_max_size()) { + retval = -1; + goto exit_init_data; + } /* Setup the dispatcher thread */ ret = pthread_create(&live_dispatcher_thread, NULL, @@ -2129,13 +2147,11 @@ int relayd_live_create(struct lttng_uri *uri, */ return retval; + /* + * Join on the live_listener_thread should anything be added after + * the live_listener thread's creation. + */ - ret = pthread_join(live_listener_thread, &status); - if (ret) { - errno = ret; - PERROR("pthread_join live listener"); - retval = -1; - } exit_listener_thread: ret = pthread_join(live_worker_thread, &status);