[lttng-dev] Printing to stdout and stderr from the userspace library.

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Wed Feb 4 17:46:39 EST 2015


----- Original Message -----

> From: "Mathieu Desnoyers" <mathieu.desnoyers at efficios.com>
> To: "Glen Keane" <glenkeane.94 at gmail.com>
> Cc: lttng-dev at lists.lttng.org
> Sent: Wednesday, February 4, 2015 12:11:39 PM
> Subject: Re: [lttng-dev] Printing to stdout and stderr from the userspace
> library.

> ----- Original Message -----

> > From: "Glen Keane" <glenkeane.94 at gmail.com>
> 
> > To: lttng-dev at lists.lttng.org
> 
> > Sent: Wednesday, February 4, 2015 10:13:06 AM
> 
> > Subject: [lttng-dev] Printing to stdout and stderr from the userspace
> > library.
> 

> > Hey Everybody,
> 

> > I'm currently working on getting Lttng tracepoints into node.js/iojs. iojs
> > is
> > a downstream fork of node.js, which I personally hope will be merged back
> > into node.js, which will then include all my tracing work from iojs. I'm
> > currently having some trouble with lttng userspace library printing to
> > stdout/stderr from iojs however.
> 

> > I currently have a pull request issued on the iojs core (
> > https://github.com/iojs/io.js/pull/702 ) and this could hopefully mean we
> > will get lttng tracepoints into the project! :)
> 

> > I have hit an issue with my pull request, however. If you follow the link
> > above you can see @bnoordhuis asked me about a test which I had to modify
> > for this pull request. This particular test passes some variables to a
> > child
> > process, the child prints the variables to stdout/stderr, and the parent
> > takes a pipe of the childs stdout/stderr and compares it to an expected
> > stdout/stderr, and asserts they match. If they don't match, its a
> > catastrophic failure and that single test fails.
> 

> > The issue here is that when you spawn a child process in node.js and pass
> > it
> > a custom ENV variable, the ENV variables available to the child process
> > will
> > not have access to any of the ENV variables of the parent process. This
> > means there is no LTTNG_HOME or HOME env variables available to the child
> > process. This then in turn means that when lttng's userspace library is
> > instantiated it doesn't have access to either of those variables and spits
> > out this warning to stderr:
> 

> > Warning: HOME environment variable not set. Disabling LTTng-UST per-user
> > tracing.
> 

> > I accept this warning is warranted, as there is no tracing location
> > available
> > to the child process so therefore it cannot be traced, but it means that
> > the
> > test fails, as it does not expect this error to printed to stderr. I am
> > looking for a way to silence the output of the library so this test doesn't
> > need to be modified, and so I don't have to implicitly pass a child process
> > the ENV HOME variable or LTTNG-HOME variable. The ability to clear all env
> > variables being passed to a child is a design choice which is acceptable
> > behaviour of io.js.
> 

> > I did not expect a library to print to stderr/stdout however, and I feel
> > that
> > this is something that may need to approached and rectified.
> 

> It makes sense to move the output of this library somewhere else than the
> console, but where,
> and how could we override the behavior without adding an environment
> variable, which seems
> to be impossible to use in your use-case ?

Issue taken care of in lttng-ust master by only showing the lttng-ust library 
error output when either: 

LTTNG_UST_DEBUG env. var. is set, or LTTNG_UST_DEBUG 
is defined at library compile-time. 

See the following commits: 

commit d14c063ab40215ec3c99e7b68483a5e170121a09 
Author: Mathieu Desnoyers <mathieu.desnoyers at efficios.com> 
Date: Wed Feb 4 17:41:32 2015 -0500 

Update manpage about LTTNG_UST_DEBUG effect 

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com> 

commit 7bdd21a41092a59207958911666cbd458f93a319 
Author: Mathieu Desnoyers <mathieu.desnoyers at efficios.com> 
Date: Wed Feb 4 17:39:01 2015 -0500 

Don't output to stderr from lib unless DEBUG is activated 

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com> 

commit eb2b066ff35dcafa727fae7e8853a9750233063e 
Author: Mathieu Desnoyers <mathieu.desnoyers at efficios.com> 
Date: Wed Feb 4 17:33:59 2015 -0500 

Remove usterr.h, use usterr-signal-safe.h everywhere instead 

Remove minimally used code. 

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com> 

Since this is a behavior change, it stay in master until the 
next LTTng release cycle (2.7). 

Feedback is welcome, 

Thanks! 

Mathieu 

> Thoughts ?

> Thanks,

> Mathieu

> > Thanks for reading,
> 
> > Glen Keane.
> 

> > _______________________________________________
> 
> > 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

> _______________________________________________
> 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/20150204/da688d8d/attachment.html>


More information about the lttng-dev mailing list