Fix: kernel channel destroy on consumer if sent
authorDavid Goulet <dgoulet@efficios.com>
Tue, 25 Feb 2014 17:21:32 +0000 (12:21 -0500)
committerDavid Goulet <dgoulet@efficios.com>
Tue, 25 Feb 2014 17:21:32 +0000 (12:21 -0500)
An enable-channel immediately followed by a destroy session triggered an
assert on the consumer followed by the shutdown of the consumer thread
for the kernel.

This fix make sure we don't ask the consumer to destroy a channel if not
previously sent to it and handle not found channel on destroy.

Fixes #643

Signed-off-by: David Goulet <dgoulet@efficios.com>
src/bin/lttng-sessiond/kernel.c
src/common/kernel-consumer/kernel-consumer.c

index b6b24a5a2b2b426fc78845bb8ca4bf7b1f16770a..faf35cc7fc8f8a42c927325a15a161bd69215148 100644 (file)
@@ -759,11 +759,11 @@ void kernel_destroy_session(struct ltt_kernel_session *ksess)
        DBG("Tearing down kernel session");
 
        /*
-        * Destroy channels on the consumer if in no output mode because the
-        * streams are in *no* monitor mode so we have to send a command to clean
-        * them up or else they leaked.
+        * Destroy channels on the consumer if at least one FD has been sent and we
+        * are in no output mode because the streams are in *no* monitor mode so we
+        * have to send a command to clean them up or else they leaked.
         */
-       if (!ksess->output_traces) {
+       if (!ksess->output_traces && ksess->consumer_fds_sent) {
                int ret;
                struct consumer_socket *socket;
                struct lttng_ht_iter iter;
index ab4f604d7a5c525447cdf23453633ef0baa4318a..d15329ffab2f91c601a8b838af5cd805470f10ab 100644 (file)
@@ -918,6 +918,11 @@ int lttng_kconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
 
                health_code_update();
 
+               /* Stop right now if no channel was found. */
+               if (!channel) {
+                       goto end_nosignal;
+               }
+
                /*
                 * This command should ONLY be issued for channel with streams set in
                 * no monitor mode.
This page took 0.027072 seconds and 4 git commands to generate.