[lttng-dev] [RFC PATCH lttng-tools] relayd pipes and error handling

David Goulet david.goulet at polymtl.ca
Fri Jul 20 14:23:44 EDT 2012


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Yep, Christian is aware of that, we talked so I guess a patch is coming :)

David

Mathieu Desnoyers:
> * David Goulet (dgoulet at efficios.com) wrote: I'm pretty OK with
> that.
> 
> I have utils_* function for that in lttng-sessiond/ ... I think
> I'm going to move them to common/ since they are pretty useful for
> the complete code tree.
> 
>> since this was a RFC patch, does Christian need to resend it,
>> after update ?
> 
> 
> Cheers! David
> 
> Christian Babeux:
>>>> Hi,
>>>> 
>>>> The current relayd employ two set of pipes for command
>>>> relaying and thread quit signalling. The relay_cmd_pipe pipes
>>>> are never closed. Also, the thread_quit_pipe pipes are not
>>>> closed in some error cases (fail to parse args, fail to
>>>> daemonize, etc.). Here is a proposed way to cleanup and
>>>> handle error cases.
>>>> 
>>>> Thoughts?
>>>> 
>>>> Thanks,
>>>> 
>>>> Christian
>>>> 
>>>> Fix: relayd relay_cmd_pipe/thread_quit_pipe should be closed
>>>> on exit/error.
>>>> 
>>>> diff --git a/src/bin/lttng-relayd/main.c 
>>>> b/src/bin/lttng-relayd/main.c index acc6ca8..55452b3 100644
>>>> --- a/src/bin/lttng-relayd/main.c +++
>>>> b/src/bin/lttng-relayd/main.c @@ -231,14 +231,26 @@ void
>>>> cleanup(void)
>>>> 
>>>> DBG("Cleaning up");
>>>> 
>>>> +       /* Close thread quit pipes */ for (i = 0; i < 2; i++)
>>>> { if (thread_quit_pipe[i] >= 0) { ret =
>>>> close(thread_quit_pipe[i]); if (ret) { -
>>>> PERROR("close"); + PERROR("close quit pipe"); } } } + +
>>>> /* Close relay cmd pipes */ +       for (i = 0; i < 2; i++) {
>>>> +               if (relay_cmd_pipe[i] >= 0) { +
>>>> ret = close(relay_cmd_pipe[i]); +                       if
>>>> (ret) { + PERROR("close cmd pipe"); +                       }
>>>> + } +       } + }
>>>> 
>>>> /* @@ -1479,7 +1491,7 @@ int main(int argc, char **argv) /*
>>>> Parse arguments */ progname = argv[0]; if ((ret =
>>>> parse_args(argc, argv) < 0)) { -               goto error; +
>>>> goto exit; }
>>>> 
>>>> if ((ret = set_signal_handler()) < 0) { @@ -1491,7 +1503,7 @@
>>>> int main(int argc, char **argv) ret = daemon(0, 0); if (ret <
>>>> 0) { PERROR("daemon"); -                       goto error; + 
>>>> goto exit; } }
>>>> 
>>>> @@ -1502,7 +1514,7 @@ int main(int argc, char **argv) if 
>>>> (control_uri->port < 1024 || data_uri->port < 1024) {
>>>> ERR("Need to be root to use ports < 1024"); ret = -1; - goto
>>>> error; +                       goto exit; } }
>>>> 
>>>> @@ -1567,6 +1579,7 @@ exit: if (!ret) { exit(EXIT_SUCCESS); }
>>>> + error: exit(EXIT_FAILURE); }
>>>> 
>>>> _______________________________________________ lttng-dev
>>>> mailing list lttng-dev at lists.lttng.org 
>>>> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>> 
>> _______________________________________________ lttng-dev mailing
>> list lttng-dev at lists.lttng.org 
>> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> 
-----BEGIN PGP SIGNATURE-----

iQEcBAEBCgAGBQJQCaItAAoJEELoaioR9I02JZMH/27Y/xxj0hC0RScI1b5AG5Rq
uG7cUKPCcyaMsHmng6t9+UMmAqMfSO+J52nkY0iHHOJg1U09Tu+UtEFIyAURBJF6
1WS3e73xSHmKPbVOWVhhoCgSSCDLHlhm9T2Jk8rFyIPRwn+7K5z2g8KIHWJWnx/7
enlJrQQpPE5szoFomVLn36SzQqbCxsKymPaJYvseTjRJSd1TW8cKyFocziMTnPvB
ENFZHMd7rpiCyo0XfKA9JgKKEVn0d1sVjaxnMwQ4KIAxIIyPPPOqSZl3pHuumSb8
tZ/MUfMKjiBL9JHqvR8Yc7yUxZ7fzYlCKBIizNhzdwfKAgzsNH92/h+OVrsfgLA=
=ssYW
-----END PGP SIGNATURE-----



More information about the lttng-dev mailing list