projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix kconsumerd multiple spawn bug
[lttng-tools.git]
/
ltt-sessiond
/
main.c
diff --git
a/ltt-sessiond/main.c
b/ltt-sessiond/main.c
index bae3f27458eb0b09c41ae788876682644c523a03..97db535d142b16f802e9e80c77a19ef094097d5a 100644
(file)
--- a/
ltt-sessiond/main.c
+++ b/
ltt-sessiond/main.c
@@
-486,6
+486,8
@@
static pid_t spawn_kconsumerd(void)
int ret;
pid_t pid;
int ret;
pid_t pid;
+ DBG("Spawning kconsumerd");
+
pid = fork();
if (pid == 0) {
/*
pid = fork();
if (pid == 0) {
/*
@@
-518,21
+520,21
@@
static int start_kconsumerd(void)
{
int ret;
{
int ret;
- DBG("Spawning kconsumerd");
-
pthread_mutex_lock(&kconsumerd_pid_mutex);
pthread_mutex_lock(&kconsumerd_pid_mutex);
- if (kconsumerd_pid == 0) {
- ret = spawn_kconsumerd();
- if (ret < 0) {
- ERR("Spawning kconsumerd failed");
- ret = LTTCOMM_KERN_CONSUMER_FAIL;
- pthread_mutex_unlock(&kconsumerd_pid_mutex);
- goto error;
- }
+ if (kconsumerd_pid != 0) {
+ goto end;
+ }
- /* Setting up the global kconsumerd_pid */
- kconsumerd_pid = ret;
+ ret = spawn_kconsumerd();
+ if (ret < 0) {
+ ERR("Spawning kconsumerd failed");
+ ret = LTTCOMM_KERN_CONSUMER_FAIL;
+ pthread_mutex_unlock(&kconsumerd_pid_mutex);
+ goto error;
}
}
+
+ /* Setting up the global kconsumerd_pid */
+ kconsumerd_pid = ret;
pthread_mutex_unlock(&kconsumerd_pid_mutex);
DBG("Kconsumerd pid %d", ret);
pthread_mutex_unlock(&kconsumerd_pid_mutex);
DBG("Kconsumerd pid %d", ret);
@@
-544,6
+546,8
@@
static int start_kconsumerd(void)
goto error;
}
goto error;
}
+end:
+ pthread_mutex_unlock(&kconsumerd_pid_mutex);
return 0;
error:
return 0;
error:
@@
-1411,8
+1415,12
@@
static int create_lttng_rundir(void)
ret = mkdir(LTTNG_RUNDIR, S_IRWXU | S_IRWXG );
if (ret < 0) {
ret = mkdir(LTTNG_RUNDIR, S_IRWXU | S_IRWXG );
if (ret < 0) {
- ERR("Unable to create " LTTNG_RUNDIR);
- goto error;
+ if (errno != EEXIST) {
+ ERR("Unable to create " LTTNG_RUNDIR);
+ goto error;
+ } else {
+ ret = 0;
+ }
}
error:
}
error:
This page took
0.023888 seconds
and
4
git commands to generate.