<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <p>Hi all,</p>
    <p>I followed Shintaro's suggestions from the previous list email
      thread and was able to get a stack dump routine that works as
      expected.  For all pools under my control I can see stack
      information like this for each ULT, with stack unwinding:</p>
    <blockquote>
      <p><font face="monospace">== pool (0x557d5b8c4580) ==<br>
          === ULT (0x7f47429590c1) ===<br>
          id        : 0<br>
          ctx       : 0x7f4742959120<br>
          p_ctx    : 0x7f4742958fe0<br>
          p_link   : (nil)<br>
          stack     : 0x7f47427590c0<br>
          stacksize : 2097152<br>
          #0 0x7f4744461760 in ythread_unwind_stack () <+16> (RSP
          = 0x7f4742959010)<br>
          #1 0x7f474445e3dd in ABT_thread_yield () <+157> (RSP =
          0x7f4742959020)<br>
          #2 0x7f474447e255 in __margo_hg_progress_fn () <+645>
          (RSP = 0x7f4742959040)<br>
          #3 0x7f474446381e in ABTD_ythread_func_wrapper () <+30>
          (RSP = 0x7f47429590b0)<br>
          #4 0x7f47444639c1 in make_fcontext () <+33> (RSP =
          0x7f47429590c0)<br>
          00007f47427590c0: 0000000000000000 0000000000000000
          0000000000000000 0000000000000000<br>
          00007f47427590e0: 0000000000000000 0000000000000000
          0000000000000000 0000000000000000<br>
          ...</font></p>
    </blockquote>
    <p>That only works for ULTs that are literally in the pool, though,
      I think.  I don't believe that I am getting information for ULTs
      that are executing (and thus are not presently in a pool data
      structure).</p>
    <p>Is there any way to accomplish that?</p>
    <p>I tried to at least get the caller's own stack at least by doing
      something like this:</p>
    <p><font face="monospace">    ABT_thread_self(&self);<br>
            ABT_info_print_thread_stack(outfile, self);</font><br>
    </p>
    <p>That almost works, but I'm just getting the raw address
      information and not the translated stack unwinding:</p>
    <blockquote>
      <p><font face="monospace">p_ctx    : 0x7f4742758fb8<br>
          p_link   : (nil)<br>
          stack     : 0x7f4742559000<br>
          stacksize : 2097152<br>
          00007f4742559000: 0000000000000000 0000000000000000
          0000000000000000 0000000000000000<br>
          00007f4742559020: 0000000000000000 0000000000000000
          0000000000000000 0000000000000000<br>
          ...</font></p>
    </blockquote>
    <p>For completeness it would be nice if the caller's stack were also
      human readable, and even better if I could somehow find stack
      information for ULTs executing on other ESs as well.</p>
    <p>For our use case we typically spawn many detached threads into a
      service pool, so we aren't tracking thread references.</p>
    <p>thanks,</p>
    <p>-Phil<br>
    </p>
    <p><br>
    </p>
  </body>
</html>