<div dir="ltr"><p class="MsoNormal">Hi,</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">I have recently started trying lttng 2.6 for a few
applications on my Ubuntu 12.04 and I noticed that the health check on sessiond
and consumerd failed soon after starting the session.</p><p class="MsoNormal"><br></p>

<p class="MsoNormal">On investigating, I found that thread_manage_consumer() had
exited causing an overall health check failure.</p><p class="MsoNormal"><br></p><p class="MsoNormal">Here are the sequence of steps that I found contributed to <b>thread_manage_consumer()</b> exiting.</p><p class="MsoNormal"></p>

<p class="MsoNormal"><br></p>

<p class="" style>1.<span style="font-stretch:normal;font-size:7pt;font-family:'Times New Roman'">      
</span>In <b>thread_manage_apps()
: 1558 , ust_app_unregister(pollfd)</b> is being called. This happens when
there is an error detected by <b>revents =
LTTNG_POLL_GETEV(&events, i) </b></p>

<p class="">My initial guess here is that as one of my apps has
crashed, producing a <b>LPOLLERR | LPOLLHUP
| LPOLLRDHUP </b>to be generated for <b>epoll()</b>
causing <b>ust_app_unregister()</b> to be
called for that app.</p>

<p class=""> </p>

<p class="" style>2.<span style="font-stretch:normal;font-size:7pt;font-family:'Times New Roman'">      
</span>In <b>ust_app_unregister():3154
, close_metadata(registry, ua_sess->consumer)  </b>in which<b> registry->metadata_closed = 1 </b>is set<b>. </b></p>

<p class="" style="text-indent:0.5in"> </p>

<p class="" style="text-indent:0.5in">(2.a) Note:<b> close_metadata() </b>also calls<b> consumer_close_metadata() </b>which sends<b> LTTNG_CONSUMER_CLOSE_METADATA </b>and<b> metadata_key </b>to the consumerd to stop
it from further dealing with the concerned app. Somehow this doesn’t seem to
help<b>.</b></p>

<p class=""><b> </b></p>

<p class="" style>3.<span style="font-stretch:normal;font-size:7pt;font-family:'Times New Roman'">      
</span>Next, I see that the <b>thread_manage_consumer():1353</b> for some reason has ignored the above
2.a and gets to do request/reply for that app by calling <b>ust_consumer_metadata_request():491 -> ust_app_push_metadat(ust_reg,
socket,1) </b>which at line 460 checks for <b>registry->metadata_closed</b>
and returns an <b>–EPIPE</b></p>

<p class="MsoNormal"> </p>

<p class="" style>4.<span style="font-stretch:normal;font-size:7pt;font-family:'Times New Roman'">      
</span>This <b>–EPIPE</b>
error cascades all the way back up to <b>thread_manage_consumer():1353</b>
at which point <b>thread_manage_consumer()</b>
decides to exit causing health_check() to fail.</p>

<p class=""> </p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">So it looks like under some scenario, an application crash
could cause the lttng some problems.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">I think a possible fix for this scenario, is to instead of 4, send an <b>ERROR</b>
message back to <b>consumerd()</b> . This could be done from <b>ust_consumer_metadata_request()</b> call. Can
someone please let me know if this is correct and shed more light on the issue
?</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal"> </p><p class="MsoNormal">Please forgive if there are any guideline omissions for posting here from my part. This is my first post.</p><p class="MsoNormal"><br></p>

<p class="MsoNormal">Regards,</p>

<p class="MsoNormal">Aravind.</p></div>