Fix: improve error handling for UST stream creation
authorDavid Goulet <dgoulet@efficios.com>
Mon, 21 Jan 2013 15:50:44 +0000 (10:50 -0500)
committerDavid Goulet <dgoulet@efficios.com>
Mon, 21 Jan 2013 15:50:44 +0000 (10:50 -0500)
Signed-off-by: David Goulet <dgoulet@efficios.com>
src/bin/lttng-sessiond/ust-app.c

index 7da843a9e0a1d1bb56ba896e8283d28fec301358..035fe7f676e8797d3a8b1d4642d4fab70de6553f 100644 (file)
@@ -2320,11 +2320,16 @@ int ust_app_start_trace(struct ltt_ust_session *usess, struct ust_app *app)
                        ret = ustctl_create_stream(app->sock, ua_chan->obj,
                                        &ustream->obj);
                        if (ret < 0) {
-                               /* Got all streams */
-                               lttng_fd_put(LTTNG_FD_APPS, 2);
+                               /* Free unused memory and reset FD states. */
                                free(ustream);
+                               lttng_fd_put(LTTNG_FD_APPS, 2);
+                               if (ret == -ENOENT) {
+                                       /* Got all streams. Continue normal execution. */
+                                       break;
+                               }
+                               /* Error at this point. Stop everything. */
                                ret = LTTNG_ERR_UST_STREAM_FAIL;
-                               break;
+                               goto error_rcu_unlock;
                        }
                        ustream->handle = ustream->obj->handle;
 
This page took 0.027857 seconds and 4 git commands to generate.