[lttng-dev] Crash on first run of target using liblttng-ust-cyg-profile.so, but subsequent runs succeed
Michael
msimons at microsoft.com
Tue Mar 1 11:35:25 EST 2016
Mathieu Desnoyers <mathieu.desnoyers <at> efficios.com> writes:
>
>
>
>
> ----- On Feb 12, 2016, at 3:21 PM, Mathieu Desnoyers
<mathieu.desnoyers <at> efficios.com> wrote:
>
> ----- On Feb 12, 2016, at 12:02 PM, Mathieu Desnoyers
<mathieu.desnoyers <at> efficios.com> wrote:
>
>
> ---- On Feb 11, 2016, at 9:01 AM, Sean Heelan <seanheelan <at>
gmail.com> wrote:
>
> Hi all,I am running a target within a Docker instance, and tracing
function execution using the latest LTTng release (2.7). The commands I
am issuing look as follows:
> ----
>
>
> lttng create cc_session -o bla
> lttng enable-event --userspace lttng_ust_cyg_profile:func_entry
> lttng start
> LD_PRELOAD=liblttng-ust-cyg-profile.so target
> lttng stop
> lttng destroy
> ----
>
> When the target is executed it aborts with the following error:
> ----
> php: lttng-ust-comm.c:1582: lttng_ust_init: Assertion `!ret' failed.
>
> ----
> If I rerun the command it then works fine. In fact, simply doing the
following within the Docker container demonstrates the issue:
> ----
>
> LD_PRELOAD=liblttng-ust-cyg-profile.so ls
> LD_PRELOAD=liblttng-ust-cyg-profile.so ls
>
> ----
> The first 'ls' will fail at the same point mentioned above, while the
second will succeed. Off the top of my head I'm struggling to come up
with an explanation as to what impact the first execution using
LD_PRELOAD would have on the second. Does it impact a shared lib cache
in some way, which I'm unaware of?
> Any assistance would be appreciated!
>
> It appears that sem_timedwait() returns an unexpected error.
>
> Can you add a ERROR("sem_timedwait"); just before the assert at line
1582 in your liblttng-ust/lttng-ust-comm.c
>
> and show us the output ?
>
> Also, what is the value of your LTTNG_UST_REGISTER_TIMEOUT env. var. ?
>
>
> Also, what architecture, Linux distribution, and kernel
>
> version are you using ?
>
>
>
> I pushed the following fix in lttng-ust:
>
>
> commit 5cf81d53e305c81517e48e0dc91620a916cdc0ccAuthor: Mathieu
Desnoyers <mathieu.desnoyers <at> efficios.com>Date: Fri Feb 12
15:44:10 2016 -0500 Fix: handle negative range for
LTTNG_UST_REGISTER_TIMEOUT We should not consider values below -1
as valid timeout values, this is is unexpected and could lead to
EINVAL errors returned by sem_timedwait. Signed-off-by: Mathieu
Desnoyers <mathieu.desnoyers <at> efficios.com>
>
>
> Let me know if it helps,
>
>
> Thanks,
>
>
> Mathieu
>
I am seeing the same issue that Sean originally reported within Docker
with the latest fix Mathieu made. Setting LTTNG_UST_REGISTER_TIMEOUT to
any positive number cause the assert to fail. This behavior change
appears to have been introduced with Docker 1.10.2. I logged a Docker
issue for this - https://github.com/docker/docker/issues/20818.
More information about the lttng-dev
mailing list