Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/lib (libpthread)



        It fixes mozilla immediately (the binary that crashed two hours ago,
runs now).  Thanks for acting so fast.  Check it it and close my PR - Its
all good with me.

        Thanks,

        paul shupak

>>From chs%spathi.chuq.com@localhost Mon Jul 19 09:03:02 2004
>Date: Mon, 19 Jul 2004 09:02:19 -0700
>From: Chuck Silvers <chuq%chuq.com@localhost>
>To: Geoff Wing <mason%primenet.com.au@localhost>
>Cc: source-changes%netbsd.org@localhost, Paul Shupak 
><paul%cobalt.plectere.com@localhost>
>Subject: Re: CVS commit: src/lib (libpthread)
>References: <slrncfmgql.bn6.mason%g.primenet.com.au@localhost> 
><slrncfmprn.22d.mason%g.primenet.com.au@localhost>
>Mime-Version: 1.0
>Content-Type: multipart/mixed; boundary="C7zPtVaVf+AK4Oqc"
>Content-Disposition: inline
>In-Reply-To: <slrncfmprn.22d.mason%g.primenet.com.au@localhost>
>User-Agent: Mutt/1.4.2.1i
>
>
>--C7zPtVaVf+AK4Oqc
>Content-Type: text/plain; charset=us-ascii
>Content-Disposition: inline
>
>hi,
>
>On Mon, Jul 19, 2004 at 06:17:27AM +0000, Geoff Wing wrote:
>> Geoff Wing <mason%primenet.com.au@localhost> typed:
>> : Chuck Silvers <chs%netbsd.org@localhost> typed:
>> :: cvs rdiff -r1.12 -r1.13 src/lib/libpthread/pthread_stack.c
>> 
>> It's this change that's causing a problem.  In pthread__stackid_setup():
>> 
>>         /* Set up an initial ucontext pointer to a "safe" area */
>> -       t->pt_uc =(ucontext_t *)(void *)((char *)t->pt_stack.ss_sp + 
>> -           t->pt_stack.ss_size - (pagesize/2));
>> -#ifdef _UC_UCONTEXT_ALIGN
>> -       t->pt_uc = (ucontext_t *)((uintptr_t)t->pt_uc & _UC_UCONTEXT_ALIGN);
>> -#endif
>> +       t->pt_uc = (ucontext_t *)
>> +               STACK_ALIGN(STACK_GROW(t->pt_stack.ss_sp, pagesize / 2),
>> +                           ~_UC_UCONTEXT_ALIGN);
>
>yea, that doesn't do the same thing.  I'm not sure why it would matter, though.
>does the attached patch fix the problem?
>
>curiously, the regress/lib/libpthread tests don't fail for me.
>I didn't try all of them, but several of the more stressful ones passed.
>I'm building firefox from current pkgsrc now, I'll do some experiments
>tonight.
>
>-Chuck
>
>--C7zPtVaVf+AK4Oqc
>Content-Type: text/plain; charset=us-ascii
>Content-Disposition: attachment; filename="diff.pthread.1"
>
>Index: src/lib/libpthread/pthread_stack.c
>===================================================================
>RCS file: /cvsroot/src/lib/libpthread/pthread_stack.c,v
>retrieving revision 1.13
>diff -u -p -r1.13 pthread_stack.c
>--- src/lib/libpthread/pthread_stack.c 18 Jul 2004 21:24:52 -0000      1.13
>+++ src/lib/libpthread/pthread_stack.c 19 Jul 2004 13:19:53 -0000
>@@ -160,6 +160,7 @@ pthread__stackid_setup(void *base, size_
>       pthread_t t;
>       void *redaddr;
>       size_t pagesize;
>+      caddr_t sp;
>       int ret;
> 
>       t = base;
>@@ -171,18 +172,18 @@ pthread__stackid_setup(void *base, size_
>        */
> 
>       redaddr = STACK_SHRINK(STACK_MAX(base, size), pagesize);
>+      t->pt_stack.ss_size = PT_STACKSIZE - 2 * pagesize;
> #ifdef __MACHINE_STACK_GROWS_UP
>       t->pt_stack.ss_sp = (char *)base + pagesize;
>+      sp = t->pt_stack.ss_sp;
> #else
>       t->pt_stack.ss_sp = (char *)base + 2 * pagesize;
>+      sp = (caddr_t)t->pt_stack.ss_sp + t->pt_stack.ss_size;
> #endif
>-      t->pt_stack.ss_size = PT_STACKSIZE - 2 * pagesize;
>-
> 
>       /* Set up an initial ucontext pointer to a "safe" area */
>       t->pt_uc = (ucontext_t *)
>-              STACK_ALIGN(STACK_GROW(t->pt_stack.ss_sp, pagesize / 2),
>-                          ~_UC_UCONTEXT_ALIGN);
>+              STACK_ALIGN(STACK_GROW(sp, pagesize / 2), ~_UC_UCONTEXT_ALIGN);
> 
>       /* Protect the next-to-bottom stack page as a red zone. */
>       ret = mprotect(redaddr, pagesize, PROT_NONE);
>
>--C7zPtVaVf+AK4Oqc--
>



Home | Main Index | Thread Index | Old Index