Fix: handle ENOENT when creating a kernel event
[lttng-tools.git] / src / bin / lttng-sessiond / kernel.c
index bf1a52171ace5fd378d66a0beae2df458839e87b..f43edd9dd506b1909a763fe63d2df9616611bac4 100644 (file)
@@ -201,6 +201,9 @@ int kernel_create_event(struct lttng_event *ev,
                case ENOSYS:
                        WARN("Event type not implemented");
                        break;
+               case ENOENT:
+                       WARN("Event %s not found!", ev->name);
+                       break;
                default:
                        PERROR("create event ioctl");
                }
@@ -755,11 +758,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;
@@ -863,8 +866,6 @@ int kernel_snapshot_record(struct ltt_kernel_session *ksess,
                        socket, node.node) {
                struct consumer_output *saved_output;
                struct ltt_kernel_channel *chan;
-               /* Code flow error */
-               assert(socket->fd >= 0);
 
                /*
                 * Temporarly switch consumer output for our snapshot output. As long
@@ -929,6 +930,8 @@ int kernel_snapshot_record(struct ltt_kernel_session *ksess,
                (void) kernel_consumer_destroy_metadata(socket, ksess->metadata);
        }
 
+       ret = LTTNG_OK;
+
 error_consumer:
        /* Close newly opened metadata stream. It's now on the consumer side. */
        err = close(ksess->metadata_stream_fd);
This page took 0.02679 seconds and 4 git commands to generate.