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