This is the mail archive of the
libc-alpha@sourceware.cygnus.com
mailing list for the glibc project.
Re: [Various] libc/1400: Programs using pthreads just hang. (on Sparc IPX)
- To: "David S. Miller" <davem at redhat dot com>
- Subject: Re: [Various] libc/1400: Programs using pthreads just hang. (on Sparc IPX)
- From: Michael Faurot <mfaurot at atww dot net>
- Date: Mon, 18 Oct 1999 14:14:00 -0400
- Cc: aj at suse dot de, libc-alpha at sourceware dot cygnus dot com
- References: <u86704hcua.fsf@gromit.rhein-neckar.de> <199910181711.KAA15797@pizda.ninka.net>
On Mon, Oct 18, 1999 at 10:11:51AM -0700, David S. Miller wrote:
>
> It's a kernel bug on sun4c systems, fixed by this patch to 2.2.x
Just applied this patch to kernel 2.2.12, rebuilt, rebooted and that
seems to have done the trick. Many thanks!
> --- ../../vanilla/2.2/linux/arch/sparc/mm/fault.c Mon Aug 9 12:05:09 1999
> +++ arch/sparc/mm/fault.c Thu Oct 7 10:01:54 1999
> @@ -309,8 +309,18 @@
> pgd_t *pgdp;
> pte_t *ptep;
>
> - if (text_fault)
> + if (text_fault) {
> address = regs->pc;
> + } else if (!write &&
> + !(regs->psr & PSR_PS)) {
> + unsigned int insn, *ip;
> +
> + ip = (unsigned int *)regs->pc;
> + if (! get_user(insn, ip)) {
> + if ((insn & 0xc1680000) == 0xc0680000)
> + write = 1;
> + }
> + }
>
> pgdp = sun4c_pgd_offset(mm, address);
> ptep = sun4c_pte_offset((pmd_t *) pgdp, address);
--
------------------------------------------------------------------------------
Michael | mfaurot | "If value corrupts then absolute value corrupts
Faurot | atww.net | absolutely."