This commit introduces an fd leak report (bogus) which is caused
by another thread using the same poll initialization functions as
the worker thread.
The fd is cleaned-up by that other thread, but the fd-tracker
is not aware of this, thus causing the report.
This is adressed in a follow-up patch.
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: I105fddcf3421373f9746c1d8f31016462af2448e
/*
* Create a poll set with O_CLOEXEC and add the thread quit pipe to the set.
*/
/*
* Create a poll set with O_CLOEXEC and add the thread quit pipe to the set.
*/
-static int create_thread_poll_set(struct lttng_poll_event *events, int size)
+static int create_named_thread_poll_set(struct lttng_poll_event *events,
+ int size, const char *name)
- ret = lttng_poll_create(events, size, LTTNG_CLOEXEC);
- if (ret < 0) {
- goto error;
- }
+ ret = fd_tracker_util_poll_create(the_fd_tracker,
+ name, events, 1, LTTNG_CLOEXEC);
/* Add quit pipe */
ret = lttng_poll_add(events, thread_quit_pipe[0], LPOLLIN | LPOLLERR);
/* Add quit pipe */
ret = lttng_poll_add(events, thread_quit_pipe[0], LPOLLIN | LPOLLERR);
+/*
+ * Create a poll set with O_CLOEXEC and add the thread quit pipe to the set.
+ */
+static int create_thread_poll_set(struct lttng_poll_event *events, int size)
+{
+ return create_named_thread_poll_set(events, size, "Unknown epoll");
+}
+
/*
* Check if the thread quit pipe was triggered.
*
/*
* Check if the thread quit pipe was triggered.
*
goto relay_connections_ht_error;
}
goto relay_connections_ht_error;
}
- ret = create_thread_poll_set(&events, 2);
+ ret = create_named_thread_poll_set(&events, 2, "Worker thread epoll");
if (ret < 0) {
goto error_poll_create;
}
if (ret < 0) {
goto error_poll_create;
}
- lttng_poll_clean(&events);
+ (void) fd_tracker_util_poll_clean(the_fd_tracker, &events);
error_poll_create:
lttng_ht_destroy(relay_connections_ht);
relay_connections_ht_error:
error_poll_create:
lttng_ht_destroy(relay_connections_ht);
relay_connections_ht_error: