<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style title="owaParaStyle"><!--P {
        MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px
}
--></style>
</head>
<body ocsi="x">
<div dir="ltr"><font color="#000000" size="2" face="Tahoma">
<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="FONT-SIZE: 12pt" lang="EN">Hi.
<br>
</span></font></p>
<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="FONT-SIZE: 12pt" lang="EN">I am using linux 2.6.39 and MIPS core.
</span></font><font size="3" face="Times New Roman"><span style="FONT-SIZE: 12pt" lang="EN"><br>
</span></font></font><font color="#000000" size="2" face="Tahoma"><font size="3" face="Times New Roman"><span style="FONT-SIZE: 12pt" lang="EN">I am keen to find out how does linux restores a thread's stack pointer, program counter and return address.
<br>
<br>
I have created a binary which spawns four threads. with a ps -eaL , then I kill one of the thread with kill -11 &lt;thread_id&gt;. In the kernel 'do_coredump' handler i can easily find out the stack pointer of the current crashed thread by reading the struct pt_regs-&gt;reg29.
 My concern is to find out the stack pointers of rest of the 3 threads that did not crash. I did it this way:
<br>
<br>
1. read the reg29 variable of struct thread_struct for each task (By traversing the list of task with list_for_each)
<br>
2. Dump the values at address stored in reg29. <br>
3. Look out manually to locate the Stack pointer offset. Tried this by crashing all the threads and found that the stackpointer comes at a fixed offset and assumed that stack pointer to be correct and I went ahead.
<br>
<br>
so you can say that my Stack pointer is stored at =&gt; reg29 &#43; offset; <br>
<br>
My question now is how to find this value of 'offset' dynamically. How does the kernel keeps a track of any thread's stack pointer while restoring the context. Since my observation was that the reg29 field of struct thread_struct at a glance seems to be a stack
 pointer. but it is not. it is just an address where at some offset we can find our stack pointer stored.
<br>
</p>
</span></font></font>
<p class="MsoNormal"><font color="#000000" size="2" face="Tahoma"><font size="3" face="Times New Roman"><span style="FONT-SIZE: 12pt" lang="EN"><font face="times new roman"></font><br>
Thanks</span></font></font></p>
<p class="MsoNormal"><font color="#000000" size="2" face="Tahoma"><font size="3" face="times new roman"><span style="FONT-SIZE: 12pt" lang="EN">Smital Desai</span></font><font size="2" face="Arial"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"></span></font></p>
</div>
<br>
</font>
<div dir="ltr"><font size="2" face="tahoma"></font>&nbsp;</div>
<div dir="ltr"><font size="2" face="tahoma"></font>&nbsp;</div>
<div class="BodyFragment"><font size="2">
<div class="PlainText">&nbsp;</div>
</font></div>
<br>
<hr>
<font face="Arial" color="Black" size="3">The contents of this e-mail and any attachment(s) may contain confidential or privileged information for the intended recipient(s). Unintended recipients are prohibited from taking action on the basis of information
 in this e-mail and using or disseminating the information, and must notify the sender and delete it from their system. L&amp;T Infotech will not accept responsibility or liability for the accuracy or completeness of, or the presence of any virus or disabling code
 in this e-mail&quot;<br>
</font>
<br clear="both">
______________________________________________________________________<BR>
</body>
</html>