Re: [lttng-dev] I'm still getting empty ust traces using tracef

Mathieu Desnoyers via lttng-dev <[email protected]>
Newsgroups org.lttng.lists.lttng-dev
Message-ID <[email protected]>
On 6/20/23 18:02, Brian Hutchinson wrote:
> On Thu, May 11, 2023 at 2:14 PM Mathieu Desnoyers
> <[email protected]> wrote:
>>
>> On 2023-05-11 14:13, Mathieu Desnoyers via lttng-dev wrote:
>>> On 2023-05-11 12:36, Brian Hutchinson via lttng-dev wrote:
>>>> ... more background.  I've always used ltt in the kernel so I don't
>>>> have much experience with the user side of it and especially
>>>> multi-threaded, multi-core so I'm probably missing some fundamental
>>>> concepts that I need to understand.
>>>
>>> Which are the exact versions of LTTng-UST and LTTng-Tools you are using
>>> now ? (2.13.N or which git commit ?)
>>>
>>
>> Also, can you try using lttng-ust stable-2.13 branch, which includes the following commit ?
>>
>> commit be2ca8b563bab81be15cbce7b9f52422369f79f7
>> Author: Mathieu Desnoyers <[email protected]>
>> Date:   Tue Feb 21 14:29:49 2023 -0500
>>
>>       Fix: Reevaluate LTTNG_UST_TRACEPOINT_DEFINE each time tracepoint.h is included
>>
>>       Fix issues with missing symbols in use-cases where tracef.h is included
>>       before defining LTTNG_UST_TRACEPOINT_DEFINE, e.g.:
>>
>>        #include <lttng/tracef.h>
>>        #define LTTNG_UST_TRACEPOINT_DEFINE
>>        #include <provider.h>
>>
>>       It is caused by the fact that tracef.h includes tracepoint.h in a
>>       context which has LTTNG_UST_TRACEPOINT_DEFINE undefined, and this is not
>>       re-evaluated for the following includes.
>>
>>       Fix this by lifting the definition code in tracepoint.h outside of the
>>       header include guards, and #undef the old LTTNG_UST__DEFINE_TRACEPOINT
>>       before re-defining it to its new semantic. Use a new
>>       _LTTNG_UST_TRACEPOINT_DEFINE_ONCE include guard within the
>>       LTTNG_UST_TRACEPOINT_DEFINE defined case to ensure symbols are not
>>       duplicated.
>>
>>       Signed-off-by: Mathieu Desnoyers <[email protected]>
>>       Change-Id: I0ef720435003a7ca0bfcf29d7bf27866c5ff8678
>>
> 
> I applied this patch and if I use "tracef" type calls in our
> application that is made up of a bunch of static libs ... the UST
> trace calls work.  I verified that traces that were called from
> several different static libs all worked.
> 
> But as soon as I include a "tracepoint" style tracepoint (that uses
> trace provider include files etc.) then doing a "lttng list -u"
> returns "None" for UST events.
> 
> Is there some kind of rule that says a file can't use both tracef and
> tracepoint calls?  Is there something special you have to do to use
> tracef and tracepoints in same file?  Doing so appears to have broken
> everything.

It should just work.

Can you provide a minimal example of the compile unit having this
issue ?

Also you mention "static libs". Make sure you do *not* define 
"LTTNG_UST_TRACEPOINT_PROBE_DYNAMIC_LINKAGE" in this case. See the 
lttng-ust(3) man page for details (section "Statically linking the 
tracepoint provider").

Thanks,

Mathieu

-- 
Mathieu Desnoyers
EfficiOS Inc.
https://www.efficios.com

_______________________________________________
lttng-dev mailing list
[email protected]
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.