Hi Mathieu, Great ! Thank you ! Olivier On Mon, Jan 19, 2015 at 8:15 PM, Mathieu Desnoyers < mathieu.desnoyers@efficios.com> wrote: > ------------------------------ > > *From: *"Olivier Delbeke" > *To: *"Mathieu Desnoyers" > *Cc: *"lttng-dev" > *Sent: *Monday, January 19, 2015 12:19:41 PM > *Subject: *Re: [lttng-dev] Addition of the return address > toliblttng-ust-libc-wrapper > > Hi Mathieu, > > Yes, feel free to add my Signed-off-by tag to the patch header. I would > just ask you to use my gmail address. > > > OK, now merged into master, thanks! > > Mathieu > > > Have a nice evening, > > Best regards, > Olivier > > On Mon, Jan 19, 2015 at 5:48 PM, Mathieu Desnoyers < > mathieu.desnoyers@efficios.com> wrote: > >> ------------------------------ >> >> *From: *"Olivier Delbeke" >> *To: *"Mathieu Desnoyers" >> *Sent: *Monday, January 19, 2015 2:03:07 AM >> *Subject: *Re: [lttng-dev] Addition of the return address >> toliblttng-ust-libc-wrapper >> >> Hi Mathieu, >> >> Here is the patch you asked me : *(See attached file: >> lttng-return-address.patch)* >> >> First , I named the variable for return address "ra", then changed it to >> "caller". Of course, you're free to change it (to make it more clear or >> more in line with the rest of your code). >> >> >> Great! >> >> Can I add your Signed-off-by tag to the patch header ? >> >> Thanks, >> >> Mathieu >> >> >> Best regards, >> >> >> *Olivier Delbeke **Senior Software Engineer* >> Olivier.Delbeke@awtce.be / T. +32 2 389 25 53 >> ------------------------------ >> *AWTC Europe S.A. *- Avenue de l’Industrie, 19 - 1420 >> Braine-l’Alleud - Belgium - www.aweurope.eu - www.aisin-aw.co.jp >> VAT : BE 0474.474.114 - RPM Nivelles >> >> >> >> [image: Inactive hide details for Mathieu Desnoyers ---01/16/2015 >> 09:41:08 PM---Mathieu Desnoyers ]Mathieu >> Desnoyers ---01/16/2015 09:41:08 PM---Mathieu Desnoyers < >> mathieu.desnoyers@efficios.com> >> >> >> *Mathieu Desnoyers > >* >> >> 01/16/2015 09:41 PM >> >> >> To >> >> >> Olivier Delbeke >> >> >> cc >> >> >> lttng-dev@lists.lttng.org >> >> >> Subject >> >> >> Re: [lttng-dev] Addition of the return address to >> liblttng-ust-libc-wrapper >> >> >> ------------------------------ >> >> *From: *"Olivier Delbeke" >> * To: *lttng-dev@lists.lttng.org >> * Sent: *Tuesday, January 13, 2015 10:50:38 AM >> * Subject: *[lttng-dev] Addition of the return address to >> liblttng-ust-libc-wrapper >> >> Hi guys, >> >> >> I am using liblttng-ust-libc-wrapper to detect memory leaks in my >> applications. >> In order to identify not only the thread where the unfreed >> allocations are done, but also the calling function, I extended the >> liblttng-ust-libc-wrapper to log the "return address" >> (__builtin_return_address(0)) in addition to the parameters of malloc(). It >> solves my problem and does not affect Trace Compass. >> Was this the right thing to do ? >> If it is, then I guess that it might interest other people too. >> >> After further thought, I'm interested to merge this into UST master. >> >> Can you re-send either as an attachment, or as plain text without the >> base64 encoding ? >> >> Thanks! >> >> Mathieu >> >> >> >> diff -Nurd b/liblttng-ust-libc-wrapper/lttng-ust-malloc.c >> c/liblttng-ust-libc-wrapper/lttng-ust-malloc.c >> --- b/liblttng-ust-libc-wrapper/lttng-ust-malloc.c 2015-01-06 >> 17:14:34.000000000 +0100 >> +++ c/liblttng-ust-libc-wrapper/lttng-ust-malloc.c 2015-01-06 >> 17:16:40.811145106 +0100 >> @@ -260,7 +260,7 @@ >> } >> retval = cur_alloc.malloc(size); >> if (URCU_TLS(malloc_nesting) == 1) { >> - tracepoint(ust_libc, malloc, size, retval); >> + tracepoint(ust_libc, malloc, size, retval, >> __builtin_return_address(0) ); >> } >> URCU_TLS(malloc_nesting)--; >> return retval; >> @@ -279,7 +279,7 @@ >> } >> >> if (URCU_TLS(malloc_nesting) == 1) { >> - tracepoint(ust_libc, free, ptr); >> + tracepoint(ust_libc, free, ptr, __builtin_return_address(0) ); >> } >> >> if (cur_alloc.free == NULL) { >> @@ -308,7 +308,7 @@ >> } >> retval = cur_alloc.calloc(nmemb, size); >> if (URCU_TLS(malloc_nesting) == 1) { >> - tracepoint(ust_libc, calloc, nmemb, size, retval); >> + tracepoint(ust_libc, calloc, nmemb, size, retval, >> __builtin_return_address(0) ); >> } >> URCU_TLS(malloc_nesting)--; >> return retval; >> @@ -360,7 +360,7 @@ >> retval = cur_alloc.realloc(ptr, size); >> end: >> if (URCU_TLS(malloc_nesting) == 1) { >> - tracepoint(ust_libc, realloc, ptr, size, retval); >> + tracepoint(ust_libc, realloc, ptr, size, retval, >> __builtin_return_address(0) ); >> } >> URCU_TLS(malloc_nesting)--; >> return retval; >> @@ -380,7 +380,7 @@ >> } >> retval = cur_alloc.memalign(alignment, size); >> if (URCU_TLS(malloc_nesting) == 1) { >> - tracepoint(ust_libc, memalign, alignment, size, retval); >> + tracepoint(ust_libc, memalign, alignment, size, retval, >> __builtin_return_address(0) ); >> } >> URCU_TLS(malloc_nesting)--; >> return retval; >> @@ -401,7 +401,7 @@ >> retval = cur_alloc.posix_memalign(memptr, alignment, size); >> if (URCU_TLS(malloc_nesting) == 1) { >> tracepoint(ust_libc, posix_memalign, *memptr, alignment, size, >> - retval); >> + retval, __builtin_return_address(0) ); >> } >> URCU_TLS(malloc_nesting)--; >> return retval; >> diff -Nurd b/liblttng-ust-libc-wrapper/ust_libc.h >> c/liblttng-ust-libc-wrapper/ust_libc.h >> --- b/liblttng-ust-libc-wrapper/ust_libc.h 2015-01-06 >> 17:14:34.000000000 +0100 >> +++ c/liblttng-ust-libc-wrapper/ust_libc.h 2015-01-06 >> 17:16:40.811145106 +0100 >> @@ -33,54 +33,60 @@ >> #include >> >> TRACEPOINT_EVENT(ust_libc, malloc, >> - TP_ARGS(size_t, size, void *, ptr), >> + TP_ARGS(size_t, size, void *, ptr, void *, ra), >> TP_FIELDS( >> ctf_integer(size_t, size, size) >> ctf_integer_hex(void *, ptr, ptr) >> + ctf_integer_hex(void *, ra, ra) >> ) >> ) >> >> TRACEPOINT_EVENT(ust_libc, free, >> - TP_ARGS(void *, ptr), >> + TP_ARGS(void *, ptr, void *, ra), >> TP_FIELDS( >> ctf_integer_hex(void *, ptr, ptr) >> + ctf_integer_hex(void *, ra, ra) >> ) >> ) >> >> TRACEPOINT_EVENT(ust_libc, calloc, >> - TP_ARGS(size_t, nmemb, size_t, size, void *, ptr), >> + TP_ARGS(size_t, nmemb, size_t, size, void *, ptr, void *, ra), >> TP_FIELDS( >> ctf_integer(size_t, nmemb, nmemb) >> ctf_integer(size_t, size, size) >> ctf_integer_hex(void *, ptr, ptr) >> + ctf_integer_hex(void *, ra, ra) >> ) >> ) >> >> TRACEPOINT_EVENT(ust_libc, realloc, >> - TP_ARGS(void *, in_ptr, size_t, size, void *, ptr), >> + TP_ARGS(void *, in_ptr, size_t, size, void *, ptr, void *, ra), >> TP_FIELDS( >> ctf_integer_hex(void *, in_ptr, in_ptr) >> ctf_integer(size_t, size, size) >> ctf_integer_hex(void *, ptr, ptr) >> + ctf_integer_hex(void *, ra, ra) >> ) >> ) >> >> TRACEPOINT_EVENT(ust_libc, memalign, >> - TP_ARGS(size_t, alignment, size_t, size, void *, ptr), >> + TP_ARGS(size_t, alignment, size_t, size, void *, ptr, void *, ra), >> TP_FIELDS( >> ctf_integer(size_t, alignment, alignment) >> ctf_integer(size_t, size, size) >> ctf_integer_hex(void *, ptr, ptr) >> + ctf_integer_hex(void *, ra, ra) >> ) >> ) >> >> TRACEPOINT_EVENT(ust_libc, posix_memalign, >> - TP_ARGS(void *, out_ptr, size_t, alignment, size_t, size, int, >> result), >> + TP_ARGS(void *, out_ptr, size_t, alignment, size_t, size, int, >> result, void *, ra), >> TP_FIELDS( >> ctf_integer_hex(void *, out_ptr, out_ptr) >> ctf_integer(size_t, alignment, alignment) >> ctf_integer(size_t, size, size) >> ctf_integer(int, result, result) >> + ctf_integer_hex(void *, ra, ra) >> ) >> ) >> >> Best regards, >> *Olivier Delbeke **Senior Software Engineer* >> Olivier.Delbeke@awtce.be / T. +32 2 389 25 53 >> ------------------------------ >> *AWTC Europe S.A. *- Avenue de l’Industrie, 19 - 1420 >> Braine-l’Alleud - Belgium - www.aweurope.eu - www.aisin-aw.co.jp >> VAT : BE 0474.474.114 - RPM Nivelles >> >> This mail, and any attachments thereto, is intended only for use by >> the addressee(s) named herein and may contain legally privileged and/or >> confidential information. If you are not the intended recipient, please >> note that any review, dissemination, disclosure, alteration, printing, >> copying or transmission of this mail and/or any file transmitted with it, >> is strictly prohibited and may be unlawful. If you have received this mail >> by mistake, please immediately notify the sender as well as our mail >> administrator at postmaster@aweurope.be, and permanently destroy the >> original as well as any copy thereof. >> _______________________________________________ >> lttng-dev mailing list >> lttng-dev@lists.lttng.org >> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev >> >> >> >> >> -- >> Mathieu Desnoyers >> EfficiOS Inc. >> http://www.efficios.com >> *(See attached file: 1E482660.jpg)**(See attached file: ecblank.gif)* >> This mail, and any attachments thereto, is intended only for use by the >> addressee(s) named herein and may contain legally privileged and/or >> confidential information. If you are not the intended recipient, please >> note that any review, dissemination, disclosure, alteration, printing, >> copying or transmission of this mail and/or any file transmitted with it, >> is strictly prohibited and may be unlawful. If you have received this mail >> by mistake, please immediately notify the sender as well as our mail >> administrator at postmaster@aweurope.be, and permanently destroy the >> original as well as any copy thereof. >> >> >> >> >> -- >> Mathieu Desnoyers >> EfficiOS Inc. >> http://www.efficios.com >> >> _______________________________________________ >> lttng-dev mailing list >> lttng-dev@lists.lttng.org >> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev >> >> > > > > -- > Mathieu Desnoyers > EfficiOS Inc. > http://www.efficios.com >