[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