[lttng-dev] segfault when exiting process with background thread
Mathieu Desnoyers
mathieu.desnoyers at efficios.com
Wed Mar 9 00:35:44 UTC 2016
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lttng.org/pipermail/lttng-dev/attachments/20160309/25a788f3/attachment.html>
More information about the lttng-dev
mailing list