<html><body bgcolor="#FFFFFF"><div>These concerns make we feel more comfortable with the approach of finding the entire stack bounds (er, the accurate top; bottom is dynamic). There isn't a portable way to do this but there are various pthread_np.</div><div><br> - Jay (phone<span class="Apple-style-span" style="-webkit-composition-fill-color: rgba(175, 192, 227, 0.231373); -webkit-composition-frame-color: rgba(77, 128, 180, 0.231373); ">)</span></div><div><br>On Nov 22, 2009, at 4:29 PM, Jay K <<a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a>> wrote:<br><br></div><div></div><blockquote type="cite"><div>
Maybe:<br>
 <br>
RunThread:<br>
if stack_grows_down<br>
  stackbase = ADR(self)<br>
else<br>
 stackbase = ADR(self) + BYTESIZE(self)<br>
 <br>
Do we know the backend won't introduce local temporaries on the stack that contain traced pointers?<br>
Or, like, if there are traced temporaries in registers..they could be spilled to the stack..and not within the bounds<br>
described the above?<br>
 <br>
 - Jay<br> <br>
<hr id="stopSpelling">
From: <a href="mailto:jay.krell@cornell.edu"><a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a></a><br>To: <a href="mailto:hosking@cs.purdue.edu"><a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a></a><br>Date: Mon, 23 Nov 2009 00:19:36 +0000<br>CC: <a href="mailto:m3commit@elegosoft.com"><a href="mailto:m3commit@elegosoft.com">m3commit@elegosoft.com</a></a><br>Subject: Re: [M3commit] CVS Update: cm3<br><br>
<style>
.ExternalClass .ecxhmmessage P
{padding:0px;}
.ExternalClass body.ecxhmmessage
{font-size:10pt;font-family:Verdana;}
</style>
You think I should just leave Win32 using the same method?<br>No point scanning past that?<br> <br>I think, as I was saying the other day, there is a slight danger in the current code.<br>Imagine an aggressive optimizer inlines RunThread into ThreadBase.<br>I think when I manually inlined it I caused just such breakage.<br> <br>We need <*NOINLINE*>?<br> <br> - Jay<br> <br>
<hr id="ecxstopSpelling">
Subject: Re: [M3commit] CVS Update: cm3<br>From: <a href="mailto:hosking@cs.purdue.edu"><a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a></a><br>Date: Sun, 22 Nov 2009 18:52:31 -0500<br>CC: <a href="mailto:jkrell@elego.de">jkrell@elego.de</a>; <a href="mailto:m3commit@elegosoft.com"><a href="mailto:m3commit@elegosoft.com">m3commit@elegosoft.com</a></a><br>To: <a href="mailto:jay.krell@cornell.edu"><a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a></a><br><br>
<div><span style="TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: 12px Helvetica; WHITE-SPACE: normal; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px" class="ecxecxApple-style-span"><span style="TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: 12px Helvetica; WHITE-SPACE: normal; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px" class="ecxecxApple-style-span">
<div style="WORD-WRAP: break-word"><span style="TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: 12px Helvetica; WHITE-SPACE: normal; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px" class="ecxecxApple-style-span"><span style="TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: 12px Helvetica; WHITE-SPACE: normal; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px" class="ecxecxApple-style-span"><span style="TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: 12px Helvetica; WHITE-SPACE: normal; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px" class="ecxecxApple-style-span"><span style="TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: 12px Helvetica; WHITE-SPACE: normal; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px" class="ecxecxApple-style-span"><span style="TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: 12px Helvetica; WHITE-SPACE: normal; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px" class="ecxecxApple-style-span"><span style="TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: 12px Helvetica; WHITE-SPACE: normal; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px" class="ecxecxApple-style-span"><span style="TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: 12px Helvetica; WHITE-SPACE: normal; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px" class="ecxecxApple-style-span"><span style="TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: 12px Helvetica; WHITE-SPACE: normal; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px" class="ecxecxApple-style-span">
<div><span style="FONT-SIZE: medium" class="ecxecxApple-style-span"><font class="ecxecxApple-style-span" color="#0000ff" face="'Gill Sans'">It is precise re traced refs.  That's the lowest frame that can hold a traced reference.</font></span></div></span></span></span></span></span></span></span></span></div></span></span></div><br>
<div>
<div>On 22 Nov 2009, at 16:53, Jay K wrote:</div><br class="ecxecxApple-interchange-newline">
<blockquote><span style="TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Helvetica; WHITE-SPACE: normal; LETTER-SPACING: normal; WORD-SPACING: 0px" class="ecxecxApple-style-span">
<div style="FONT-FAMILY: Verdana; FONT-SIZE: 10pt" class="ecxecxhmmessage">The end of the stack isn't precise:<br> <br>C:\dev2\cm3.release_branch_cm3_5_8\m3-libs\m3core\src\thread\POSIX\ThreadPosix.m3(1058):    self.stackbase := ADR(xx);<br> <br>"stack" here:<br> <br>void<br>ProcessContext(Context *c, void *stack,<br>        void (*p) (void *start, void *stop))<br>{<br>  if (stack < c->uc.uc_stack.ss_sp)<br>    p(stack, c->uc.uc_stack.ss_sp);<br>  else<br>    p(c->uc.uc_stack.ss_sp, stack);<br>#ifdef __APPLE__<br>  p(&(c->uc.uc_mcontext[0]), &(c->uc.uc_mcontext[1]));<br>#else<br>  p(&c[0], &c[1]);<br>#endif<br>}<br><br> - Jay<br><br> <br>> From:<span class="ecxecxApple-converted-space"> </span><a href="mailto:hosking@cs.purdue.edu"><a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a></a><br>> Date: Sun, 22 Nov 2009 13:41:26 -0500<br>> To:<span class="ecxecxApple-converted-space"> </span><a href="mailto:jkrell@elego.de"><a href="mailto:jkrell@elego.de">jkrell@elego.de</a></a><br>> CC:<span class="ecxecxApple-converted-space"> </span><a href="mailto:m3commit@elegosoft.com"><a href="mailto:m3commit@elegosoft.com">m3commit@elegosoft.com</a></a><br>> Subject: Re: [M3commit] CVS Update: cm3<br>><span class="ecxecxApple-converted-space"> </span><br>> > Note that ThreadPosix.m3 could also implement such precise stackbase.<br>><span class="ecxecxApple-converted-space"> </span><br>> ThreadPosix *does* implement a precise stack base. It's obtained from the ucontext set in the thread switch routine (swapcontext).<br>><span class="ecxecxApple-converted-space"> </span><br>> > ThreadPThread.m3 probably often could, like with the functions on OpenBSD (broken) and FreeBSD, etc.<br>><span class="ecxecxApple-converted-space"> </span><br></div></span></blockquote></div><br>                                          
</div></blockquote></body></html>