+ try {
+ sub_ret = start_tracing(session.name);
+ } catch (const lttng::ctl::error& ctl_exception) {
+ switch (ctl_exception.code()) {
+ case LTTNG_ERR_TRACE_ALREADY_STARTED:
+ WARN_FMT("Tracing already started for session `{}`", session.name);
+ sub_ret = CMD_SUCCESS;
+ break;
+ case LTTNG_ERR_NO_SESSION:
+ if (spec.type_ != session_spec::type::NAME) {
+ /* Session destroyed during command, ignore and carry-on. */
+ sub_ret = CMD_SUCCESS;
+ break;
+ } else {
+ sub_ret = CMD_ERROR;
+ break;
+ }
+ case LTTNG_ERR_NO_SESSIOND:
+ /* Don't keep going on a fatal error. */
+ return CMD_FATAL;