> 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 ®s = 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
|