[lttng-dev] segfault when exiting process with background thread
Mathieu Desnoyers
mathieu.desnoyers at efficios.com
Thu Mar 10 18:52:57 UTC 2016
Hi Jeffrey,
I CC'd your @live.com address on the RFC patch. Please let me know if the approach
is OK with you (and try it out).
See:
https://lists.lttng.org/pipermail/lttng-dev/2016-March/025608.html
Thanks,
Mathieu
----- On Mar 10, 2016, at 1:35 PM, Jeffrey Chen <cpthk at hotmail.com> wrote:
> Thanks Mathieu.
> Is there a plan at LTTng side to fix this issue? If so, we could wait for the
> fix. If not, we will have to workaround the problem for now (probably by
> applying your fix ourselves). Thanks.
> From: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
> Sent: Tuesday, March 8, 2016 6:09 PM
> To: Jonathan Rajotte Julien
> Cc: lttng-dev
> Subject: Re: [lttng-dev] segfault when exiting process with background thread
> The attached patch works around the issue. The problem is
> the tracepoint destructors that run in parallel with the thread
> that still exists.
> If we remove this, we leak the liblttng-ust-tracepoint.so.0 shared
> object on dlclose of the instrumented code. Not sure if we should
> care though...
> Thoughts ?
> Thanks,
> Mathieu
> ----- On Mar 8, 2016, at 7:35 PM, Mathieu Desnoyers
> <mathieu.desnoyers at efficios.com> wrote:
>> Reproduced it on master (ust and tools).
>> Repro with:
>> lttng create
>> lttng enable-event -u -a
>> lttng start
>> then run hello a few times, it eventually segfaults in the spawned thread.
>> Looking into it.
>> Thanks,
>> Mathieu
>> ----- On Mar 8, 2016, at 7:12 PM, Jonathan Rajotte Julien
>> <Jonathan.rajotte-julien at efficios.com> wrote:
>>> Hi Jeffrey,
>>> Could you provide the version for lttng-ust, lttng-tools, lttng-modules (if
>>> installed)?
>>> Were you able to reproduce the issue on master (git) ?
>>> What are the exact order of command to reproduce the problem ?
>>> Thanks
>>> On 2016-03-08 06:43 PM, Jeffrey Chen wrote:
>>>> Hi LTTng community:
>>>> We are using LTTng for our production environment. We have been noticing
>>>> segfault problem when our process exit. We think the problem is due to the
>>>> background thread continue to write traces, while LTTng cleanup its memory. We
>>>> do not know how to fix this issue without changing LTTng code base. I have
>>>> written a very simple app that could repro the problem. Most of my codes are
>>>> copy pasted from the LTTng doc sample. Is there any fix that the LTTng side
>>>> could do?
>>>> hello.c
>>>> #include <stdio.h>
>>>> #include "hello-tp.h"
>>>> #include <pthread.h>
>>>> void* doSomeThing(void *arg)
>>>> {
>>>> int x;
>>>> for (x = 0; x < 100000; ++x) {
>>>> tracepoint(hello_world, my_first_tracepoint, x, "test");
>>>> }
>>>> }
>>>> int main(int argc, char *argv[])
>>>> {
>>>> int x;
>>>> getchar();
>>>> pthread_t inc_x_thread;
>>>> if(pthread_create(&inc_x_thread, NULL, doSomeThing, NULL)) {
>>>> fprintf(stderr, "Error creating thread\n");
>>>> return 1;
>>>> }
>>>> tracepoint(hello_world, my_first_tracepoint, 23, "hi there!");
>>>> return 0;
>>>> }
>>>> hello-tp.c
>>>> #define TRACEPOINT_CREATE_PROBES
>>>> #define TRACEPOINT_DEFINE
>>>> #include "hello-tp.h"
>>>> hello-tp.h
>>>> #undef TRACEPOINT_PROVIDER
>>>> #define TRACEPOINT_PROVIDER hello_world
>>>> #undef TRACEPOINT_INCLUDE
>>>> #define TRACEPOINT_INCLUDE "./hello-tp.h"
>>>> #if !defined(_HELLO_TP_H) || defined(TRACEPOINT_HEADER_MULTI_READ)
>>>> #define _HELLO_TP_H
>>>> #include <lttng/tracepoint.h>
>>>> TRACEPOINT_EVENT(
>>>> hello_world,
>>>> my_first_tracepoint,
>>>> TP_ARGS(
>>>> int, my_integer_arg,
>>>> char*, my_string_arg
>>>> ),
>>>> TP_FIELDS(
>>>> ctf_string(my_string_field, my_string_arg)
>>>> ctf_integer(int, my_integer_field, my_integer_arg)
>>>> )
>>>> )
>>>> #endif /* _HELLO_TP_H */
>>>> #include <lttng/tracepoint-event.h>
>>>> Compile
>>>> gcc -c -I. hello-tp.c
>>>> gcc -c hello.c
>>>> gcc -o hello hello.o hello-tp.o -llttng-ust -ldl -lpthread
>>>> _______________________________________________
>>>> lttng-dev mailing list lttng-dev at lists.lttng.org
>>>> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>>> --
>>> Jonathan R. Julien
>>> Efficios
>>> _______________________________________________
>>> lttng-dev mailing list
>>> lttng-dev at lists.lttng.org
>>> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>> --
>> Mathieu Desnoyers
>> EfficiOS Inc.
>> http://www.efficios.com
>> _______________________________________________
>> lttng-dev mailing list
>> lttng-dev at lists.lttng.org
>> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> --
> Mathieu Desnoyers
> EfficiOS Inc.
> http://www.efficios.com
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.lttng.org/pipermail/lttng-dev/attachments/20160310/f84389e9/attachment.html>
More information about the lttng-dev
mailing list