xfs
[Top] [All Lists]

Re: Oops - 2.4.2-SGI_XFS_1.0.1_PR1

To: Andrew Klaassen <ak@xxxxxxx>
Subject: Re: Oops - 2.4.2-SGI_XFS_1.0.1_PR1
From: Steve Lord <lord@xxxxxxx>
Date: Tue, 26 Jun 2001 08:56:13 -0500
Cc: linux-xfs@xxxxxxxxxxx
In-reply-to: Message from Andrew Klaassen <ak@dkp.com> of "Tue, 26 Jun 2001 09:37:18 EDT." <20010626093718.A16841@key.dkp.com>
Sender: owner-linux-xfs@xxxxxxxxxxx
> On Tue, Jun 26, 2001 at 11:46:12AM +1000, 
> Keith Owens wrote:
> 
> > Capture the serial console output.  'bt' to trace the failing
> > task is probably all you need at this stage.  For an oops it
> > is usually only the current task that is interesting.  For
> > loops and hangs, 'ps' and 'bta' are useful to get backtrace
> > for all processes.
> 
> Okay...
> 
> This happened during... either test 13 or 14 or 15 of the checks
> in the cmd/xfstests directory.  (Unfortunately, the screen saver
> on the machine's console appears to have kicked in
> overnight....(?))
> 
> Will anything else from kdb be useful to have before I reboot
> and try again?

OK, I know what this is - thanks for the stack trace, you have a highmem
system correct? There was a core kernel bug which xfs appeared to be
able to find. I will check with Eric that the fix goes into the 1.0.1
code before we finalize it. This patch (cut and pasted, so hand apply)
should fix it:

--- S6-pre2/fs/buffer.c Fri Jun  8 18:29:03 2001
+++ /tmp/buffer.c       Tue Jun 12 13:17:57 2001
@@ -646,8 +646,8 @@
                        /* Another device? */
                        if (bh->b_dev != dev)
                                continue;
-                       /* Part of a mapping? */
-                       if (bh->b_page->mapping)
+                       /* Not hashed? */
+                       if (!bh->b_pprev)
                                continue;
                        if (buffer_locked(bh)) {
                                atomic_inc(&bh->b_count);
@@ -710,6 +710,8 @@
                for (i = nr_buffers_type[nlist]; i > 0 ; bh = bh_next, i--) {
                        bh_next = bh->b_next_free;
                        if (bh->b_dev != dev || bh->b_size == size)
+                               continue;
+                       if (!bh->b_pprev)
                                continue;
                        if (buffer_locked(bh)) {
                                atomic_inc(&bh->b_count);


Steve

> 
> Andrew Klaassen
> 
> 
> Unable to handle kernel NULL pointer dereference at virtual address 00000000
>  printing eip:
> c0156c6a
> pgd entry f68ff000: 0000000000000000
> pmd entry f68ff000: 0000000000000000
> ... pmd not present!
> 
> Entering kdb (current=0xf68b8000, pid 649) Oops: Oops
> due to oops @ 0xc0156c6a
> eax = 0x00000000 ebx = 0x00001000 ecx = 0x00000400 edx = 0xe6be8e60
> esi = 0x00000001 edi = 0x00000000 esp = 0xf68b9ddc eip = 0xc0156c6a
> ebp = 0x00003dbd xss = 0x00000018 xcs = 0x00000010 eflags = 0x00010246
> xds = 0xe6be0018 xes = 0x00000018 origeax = 0xffffffff &regs = 0xf68b9da8
> kdb> bt
>     EBP       EIP         Function(args)
> 0x00003dbd 0xc0156c6a ext2_alloc_branch+0xf2 (0xf6b6a040, 0x2, 0x3dbc, 0xf68b
> 9e)
>                                kernel .text 0xc0100000 0xc0156b78 0xc0156d9c
>            0xc01570d0 ext2_get_block+0x334 (0xf6b6a040, 0xc, 0xe6bd75a0, 0x1,
>  0)
>                                kernel .text 0xc0100000 0xc0156d9c 0xc0157298
>            0xc0135e21 __block_prepare_write+0x139 (0xf6b6a040, 0xc209bd48, 0x
> 0,)
>                                kernel .text 0xc0100000 0xc0135ce8 0xc0135fe4
>            0xc0136776 block_prepare_write+0x22 (0xc209bd48, 0x0, 0x60, 0xc015
> 6d)
>                                kernel .text 0xc0100000 0xc0136754 0xc01367c4
>            0xc01574b1 ext2_prepare_write+0x19 (0xf6978860, 0xc209bd48, 0x0, 0
> x6)
>                                kernel .text 0xc0100000 0xc0157498 0xc01574b8
>            0xc0127c39 generic_file_write+0x401 (0xf6978860, 0x4001900c, 0x60,
>  0)
>                                kernel .text 0xc0100000 0xc0127838 0xc0127ec8
>            0xc01338ba sys_write+0x8e (0x2, 0x40019000, 0x6c, 0x6c, 0x40019000
> )
>                                kernel .text 0xc0100000 0xc013382c 0xc01338f0
>            0xc0108edb system_call+0x33
>                                kernel .text 0xc0100000 0xc0108ea8 0xc0108ee0



<Prev in Thread] Current Thread [Next in Thread>