Right now the sessiond will only look in its own directory for
the consumerd when starting a kernel trace. This patch makes it
look in the consumerd32_ and consumerd64_ paths too.

Signed-off-by: Alexandre Montplaisir <[email protected]>
---
 lttng-sessiond/main.c |   29 ++++++++++++++++++++++++-----
 1 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/lttng-sessiond/main.c b/lttng-sessiond/main.c
index 77f86ae..baaba58 100644
--- a/lttng-sessiond/main.c
+++ b/lttng-sessiond/main.c
@@ -1528,7 +1528,9 @@ static pid_t spawn_consumerd(struct consumer_data 
*consumer_data)
 {
        int ret;
        pid_t pid;
+       const char *consumer_to_use;
        const char *verbosity;
+       struct stat st;
 
        DBG("Spawning consumerd");
 
@@ -1544,11 +1546,26 @@ static pid_t spawn_consumerd(struct consumer_data 
*consumer_data)
                }
                switch (consumer_data->type) {
                case LTTNG_CONSUMER_KERNEL:
-                       execl(INSTALL_BIN_PATH "/lttng-consumerd",
-                                       "lttng-consumerd", verbosity, "-k",
-                                       "--consumerd-cmd-sock", 
consumer_data->cmd_unix_sock_path,
-                                       "--consumerd-err-sock", 
consumer_data->err_unix_sock_path,
-                                       NULL);
+                       /*
+                        * Find out which consumerd to execute. We will first
+                        * try the 64-bit path, then the 32-bit one, then
+                        * fallback on sessiond's installation directory.
+                        */
+                       if (stat(consumerd64_path, &st) == 0) {
+                               consumer_to_use = consumerd64_path;
+                       } else if (stat(consumerd32_path, &st) == 0) {
+                               consumer_to_use = consumerd32_path;
+                       } else if (stat(INSTALL_BIN_PATH "/" CONSUMERD_FILE, 
&st) == 0) {
+                               consumer_to_use = INSTALL_BIN_PATH "/" 
CONSUMERD_FILE;
+                       } else {
+                               break;
+                       }
+                       DBG("Using kernel consumer at: %s",  consumer_to_use);
+                       execl(consumer_to_use,
+                               "lttng-consumerd", verbosity, "-k",
+                               "--consumerd-cmd-sock", 
consumer_data->cmd_unix_sock_path,
+                               "--consumerd-err-sock", 
consumer_data->err_unix_sock_path,
+                               NULL);
                        break;
                case LTTNG_CONSUMER64_UST:
                {
@@ -1581,6 +1598,7 @@ static pid_t spawn_consumerd(struct consumer_data 
*consumer_data)
                                        goto error;
                                }
                        }
+                       DBG("Using 64-bit UST consumer at: %s",  
consumerd64_path);
                        ret = execl(consumerd64_path, verbosity, "-u",
                                        "--consumerd-cmd-sock", 
consumer_data->cmd_unix_sock_path,
                                        "--consumerd-err-sock", 
consumer_data->err_unix_sock_path,
@@ -1624,6 +1642,7 @@ static pid_t spawn_consumerd(struct consumer_data 
*consumer_data)
                                        goto error;
                                }
                        }
+                       DBG("Using 32-bit UST consumer at: %s",  
consumerd32_path);
                        ret = execl(consumerd32_path, verbosity, "-u",
                                        "--consumerd-cmd-sock", 
consumer_data->cmd_unix_sock_path,
                                        "--consumerd-err-sock", 
consumer_data->err_unix_sock_path,
-- 
1.7.7.3


_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to