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); }