projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: miscellaneous memory handling fixes
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
main.c
diff --git
a/src/bin/lttng-sessiond/main.c
b/src/bin/lttng-sessiond/main.c
index a9e6797556ec1dde54f714a64bd31f344f1c3f60..f0aaf73b064f4845974876503de4e7bf7f89f2be 100644
(file)
--- a/
src/bin/lttng-sessiond/main.c
+++ b/
src/bin/lttng-sessiond/main.c
@@
-77,7
+77,7
@@
static int tracing_group_name_override;
static char *opt_pidfile;
static int opt_sig_parent;
static int opt_verbose_consumer;
static char *opt_pidfile;
static int opt_sig_parent;
static int opt_verbose_consumer;
-static int opt_daemon;
+static int opt_daemon
, opt_background
;
static int opt_no_kernel;
static int is_root; /* Set to 1 if the daemon is running as root */
static pid_t ppid; /* Parent PID for --sig-parent option */
static int opt_no_kernel;
static int is_root; /* Set to 1 if the daemon is running as root */
static pid_t ppid; /* Parent PID for --sig-parent option */
@@
-140,6
+140,7
@@
static const struct option long_options[] = {
{ "consumerd64-path", 1, 0, 't' },
{ "consumerd64-libdir", 1, 0, 'T' },
{ "daemonize", 0, 0, 'd' },
{ "consumerd64-path", 1, 0, 't' },
{ "consumerd64-libdir", 1, 0, 'T' },
{ "daemonize", 0, 0, 'd' },
+ { "background", 0, 0, 'b' },
{ "sig-parent", 0, 0, 'S' },
{ "help", 0, 0, 'h' },
{ "group", 1, 0, 'g' },
{ "sig-parent", 0, 0, 'S' },
{ "help", 0, 0, 'h' },
{ "group", 1, 0, 'g' },
@@
-311,7
+312,7
@@
void lttng_sessiond_notify_ready(void)
* Notify the parent of the fork() process that we are
* ready.
*/
* Notify the parent of the fork() process that we are
* ready.
*/
- if (opt_daemon) {
+ if (opt_daemon
|| opt_background
) {
kill(child_ppid, SIGUSR1);
}
}
kill(child_ppid, SIGUSR1);
}
}
@@
-1629,6
+1630,10
@@
static void *thread_dispatch_ust_registration(void *data)
health_register(health_sessiond, HEALTH_SESSIOND_TYPE_APP_REG_DISPATCH);
health_register(health_sessiond, HEALTH_SESSIOND_TYPE_APP_REG_DISPATCH);
+ if (testpoint(sessiond_thread_app_reg_dispatch)) {
+ goto error_testpoint;
+ }
+
health_code_update();
CDS_INIT_LIST_HEAD(&wait_queue.head);
health_code_update();
CDS_INIT_LIST_HEAD(&wait_queue.head);
@@
-1833,6
+1838,7
@@
error:
free(wait_node);
}
free(wait_node);
}
+error_testpoint:
DBG("Dispatch thread dying");
if (err) {
health_error();
DBG("Dispatch thread dying");
if (err) {
health_error();
@@
-2021,11
+2027,6
@@
static void *thread_registration_apps(void *data)
exit:
error:
exit:
error:
- if (err) {
- health_error();
- ERR("Health error occurred in %s", __func__);
- }
-
/* Notify that the registration thread is gone */
notify_ust_apps(0);
/* Notify that the registration thread is gone */
notify_ust_apps(0);
@@
-2050,6
+2051,10
@@
error_listen:
error_create_poll:
error_testpoint:
DBG("UST Registration thread cleanup complete");
error_create_poll:
error_testpoint:
DBG("UST Registration thread cleanup complete");
+ if (err) {
+ health_error();
+ ERR("Health error occurred in %s", __func__);
+ }
health_unregister(health_sessiond);
return NULL;
health_unregister(health_sessiond);
return NULL;
@@
-3729,7
+3734,7
@@
restart:
rcu_thread_online();
rcu_thread_online();
-
reply.ret_code = 0
;
+
memset(&reply, 0, sizeof(reply))
;
for (i = 0; i < NR_HEALTH_SESSIOND_TYPES; i++) {
/*
* health_check_state returns 0 if health is
for (i = 0; i < NR_HEALTH_SESSIOND_TYPES; i++) {
/*
* health_check_state returns 0 if health is
@@
-4039,6
+4044,7
@@
static void usage(void)
fprintf(stderr, " --consumerd64-path PATH Specify path for the 64-bit UST consumer daemon binary\n");
fprintf(stderr, " --consumerd64-libdir PATH Specify path for the 64-bit UST consumer daemon libraries\n");
fprintf(stderr, " -d, --daemonize Start as a daemon.\n");
fprintf(stderr, " --consumerd64-path PATH Specify path for the 64-bit UST consumer daemon binary\n");
fprintf(stderr, " --consumerd64-libdir PATH Specify path for the 64-bit UST consumer daemon libraries\n");
fprintf(stderr, " -d, --daemonize Start as a daemon.\n");
+ fprintf(stderr, " -b, --background Start as a daemon, keeping console open.\n");
fprintf(stderr, " -g, --group NAME Specify the tracing group name. (default: tracing)\n");
fprintf(stderr, " -V, --version Show version number.\n");
fprintf(stderr, " -S, --sig-parent Send SIGUSR1 to parent pid to notify readiness.\n");
fprintf(stderr, " -g, --group NAME Specify the tracing group name. (default: tracing)\n");
fprintf(stderr, " -V, --version Show version number.\n");
fprintf(stderr, " -S, --sig-parent Send SIGUSR1 to parent pid to notify readiness.\n");
@@
-4077,6
+4083,9
@@
static int set_option(int opt, const char *arg, const char *optname)
case 'd':
opt_daemon = 1;
break;
case 'd':
opt_daemon = 1;
break;
+ case 'b':
+ opt_background = 1;
+ break;
case 'g':
tracing_group_name = strdup(arg);
break;
case 'g':
tracing_group_name = strdup(arg);
break;
@@
-4725,10
+4734,11
@@
int main(int argc, char **argv)
}
/* Daemonize */
}
/* Daemonize */
- if (opt_daemon) {
+ if (opt_daemon
|| opt_background
) {
int i;
int i;
- ret = lttng_daemonize(&child_ppid, &recv_child_signal, 1);
+ ret = lttng_daemonize(&child_ppid, &recv_child_signal,
+ !opt_background);
if (ret < 0) {
goto error;
}
if (ret < 0) {
goto error;
}
This page took
0.026847 seconds
and
4
git commands to generate.