Re: Horrible X and kernel crashes under mipsel RH7.1...
On Tue, 31 Jul 2001, Steven J. Hill wrote:
> root@localhost:/home/sjhill$ /usr/X11R6/bin/Xfbdev
> __alloc_pages: 5-order allocation failed.
> __alloc_pages: 5-order allocation failed.
> Unable to handle kernel paging request at virtual address 00000000, epc == 00000
> 000, ra == 80167750
> Oops in fault.c:do_page_fault, line 172:
> $0 : 00000000 801f0000 b30003f0 000000bb
> $4 : 0000000c 0000006b 809d3bc0 00006b18
> $8 : 00000020 801658f0 801cbc98 801c5000
> $12: 00000001 00000040 00000003 81f6eea0
> $16: 801dbf18 801cbe60 00000001 801d60cc
> $20: 801d0a3c 809d3bc0 00000000 806e3620
> $24: 00000001 2ac99d90
> $28: 813f2000 813f3de0 00000000 80167750
> epc : 00000000
> Status: b001f003
> Cause : 00000008
> Process Xfbdev (pid: 596, stackpage=813f2000)
>
> ***************
>
> The next one I printed out the memory usage as well as the attempt to run
> startx and xinit first. The page alloc messages aren't printed, but the
> kernel still dies a horrible death.
The kernel actually commits suicide. I don't know why it does, but it
looks like a temporary debugging hack. With the following patch the
system might survive.
Next you might want to find why the null pointer dereference happens.
The __alloc_pages errors suggest some code does not check for a null
pointer being returned. A kernel code inspection around address
0x80167750 might reveal guilty code.
Ralf, could you please apply the patch?
--
+ Maciej W. Rozycki, Technical University of Gdansk, Poland +
+--------------------------------------------------------------+
+ e-mail: macro@ds2.pg.gda.pl, PGP key available +
patch-mips-2.4.5-20010730-die-0
diff -up --recursive --new-file linux.macro/arch/mips/kernel/traps.c linux/arch/mips/kernel/traps.c
--- linux.macro/arch/mips/kernel/traps.c Tue Jul 24 04:26:34 2001
+++ linux/arch/mips/kernel/traps.c Wed Aug 1 16:12:42 2001
@@ -204,7 +204,6 @@ extern void __die(const char * str, stru
show_trace((unsigned int *) regs->regs[29]);
show_code((unsigned int *) regs->cp0_epc);
printk("\n");
-while(1);
spin_unlock_irq(&die_lock);
do_exit(SIGSEGV);
}
Reply to: