[ltt-dev] UST - Problems in recording trace on a current process

Pierre-Marc Fournier pierre-marc.fournier at polymtl.ca
Thu Feb 11 19:18:51 EST 2010


Hi Naren,

On February 10, 2010 17:08:21 Naren wrote:
> Hi Pierre
>
> >>I just commited a quick and dirty fix for this issue. A refactoring of
> >> the
>
> ust
>
> >>communication lib is in progress to address this more elegantly.
>
> Everything is working fine.Finally. With the default markers,I am getting a
> trace but in LTTV, i could only see the 6 events that was captured, hence
> not getting anything in control flow viewer. I presume, lot many
> instrumentations have to be added by me before i get to see any substantial
> trace results.

What you see is normal. In order to render the control flow view, lttv needs 
events that are generated by the kernel tracer. This includes events about 
scheduling, irq, syscalls etc. So the lttv control flow view in its current 
form is not useful with userspace traces.

You could load in lttv both a userspace trace and a kernel trace that was 
recorded at the same time. You would then get appropriate events for drawing 
the CFV as well as userspace events. For that you would need to make sure the 
TSC clock is used in ust (see kernelcompat.h).

For userspace tracing, as you say, you need to add your own instrumentation. 
This instrumentation will likely be specific to what your application does. 
However, libraries like libc could be instrumented and automatically events 
for all processes that use them. Interesting examples would be malloc/free 
instrumentation or instrumentation of the pthread locking api.

The control flow views could eventually be used to display 
application-specific information, for example session progress in a telecom 
application.

>
> Thanks a lot for you help.
>
> However, i made few observations
>
> 1. In the terminal window, where i gave LD_PRELOAD, i am getting this error
> after destroying the trace and closing the traced program
>
> *root at naren-laptop:/usr/src# LD_PRELOAD=/usr/local/lib/libust.so.0.0.0
> /usr/bin/gimp*
> *libust[9868/9869]: Error: cannot find trace! (in do_cmd_put_subbuffer() at
> tracectl.c:632)*
> *libust[9868/9869]: Error: cannot find trace! (in do_cmd_put_subbuffer() at
> tracectl.c:632)*
> *
> *
> 2. In the terminal window where ustd demon is running, i am getting the
> following errors
>
> *ustd[9447/9820]: Error: Buffer overflow (channel=metadata_0), reader
> pushed. This channel will not be usable passed this point. (in
> consumer_loop() at ustd.c:399)*
> *ustd[9447/9881]: Error: unable to parse response to put_subbuffer (in
> put_subbuffer() at ustd.c:141)*
> *ustd[9447/9881]: Error: unknown error putting subbuffer (channel=ust_0)
> (in consumer_loop() at ustd.c:395)*
> *ustd[9447/9880]: Error: Buffer overflow (channel=metadata_0), reader
> pushed. This channel will not be usable passed this point. (in
> consumer_loop() at ustd.c:399)*
> *
> *
> Buffer over error, is it due to the fact that trace is being recorded in
> flight recorder mode?

No. Flight recorder is not yet supported. There is no way to activate it.

Gimp is multi-process application, so you must use libinterfork.so. Did you 
LD_PRELOAD it?





More information about the lttng-dev mailing list