URI: 
       tlibthread: comment stack border a bit more - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 4197af4122bc06cf4062ca2d1d5bc8f973e37cf1
   DIR parent 93e2e820a5551ba3d0a1e0f0fbd4c5eb65e18ce6
  HTML Author: Russ Cox <rsc@swtch.com>
       Date:   Fri, 24 Jan 2020 13:09:55 -0500
       
       libthread: comment stack border a bit more
       
       Diffstat:
         M src/libthread/thread.c              |      14 ++++++++++----
       
       1 file changed, 10 insertions(+), 4 deletions(-)
       ---
   DIR diff --git a/src/libthread/thread.c b/src/libthread/thread.c
       t@@ -136,10 +136,16 @@ threadalloc(void (*fn)(void*), void *arg, uint stack)
                        sysfatal("threadalloc getcontext: %r");
        //print("makecontext sp=%p t=%p startfn=%p\n", (char*)t->stk+t->stksize, t, t->startfn);
        
       -        /* call makecontext to do the real work. */
       -        /* leave a few words open on both ends */
       -        t->context.uc.uc_stack.ss_sp = (void*)(t->stk+8);
       -        t->context.uc.uc_stack.ss_size = t->stksize-64;
       +        /*
       +         * Call makecontext to do the real work.
       +         * To avoid various mistakes on other system software,
       +         * debuggers, and so on, don't get too close to both
       +         * ends of the stack. Just staying away is much easier
       +         * than debugging everything (outside our control)
       +         * that has off-by-one errors.
       +         */
       +        t->context.uc.uc_stack.ss_sp = (void*)(t->stk+64);
       +        t->context.uc.uc_stack.ss_size = t->stksize-2*64;
        #if defined(__sun__) && !defined(__MAKECONTEXT_V2_SOURCE)                /* sigh */
                /* can avoid this with __MAKECONTEXT_V2_SOURCE but only on SunOS 5.9 */
                t->context.uc.uc_stack.ss_sp =