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: aj at suse dot de
- Subject: Re: [Various] libc/1400: Programs using pthreads just hang. (on Sparc IPX)
- From: "David S. Miller" <davem at redhat dot com>
- Date: Mon, 18 Oct 1999 10:11:51 -0700
- CC: libc-alpha at sourceware dot cygnus dot com, mfaurot at atww dot net
- References: <u86704hcua.fsf@gromit.rhein-neckar.de>
It's a kernel bug on sun4c systems, fixed by this patch to 2.2.x
--- ../../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);