Oops in 2.2.12 (ext2fs)

Alvaro Lopes (alvieboy@utad.pt)
Sat, 25 Sep 1999 13:51:53 +0000


This is a multi-part message in MIME format.
--------------24E6256D63F2E64FC5D5CB46
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi

Just had an Oops after some SCSI errors on a multidisk (strip) device.
I was able to disasseble the relevant parts. So, there it goes.

Unfortunately I had to recompile the kernel... But I believe the syms fit just OK.
Managed to trace EIP to ext2_free_blocks using the running System.map.

> Unable to handle kernel NULL pointer dereference at virtual address 00000024
> current->tss.cr3 = 0eed3000, %cr3 = 0eed3000
> *pde = 00000000
> Oops: 0000
> CPU: 0
> EIP: 0010:[<c013fc22>]
> EFLAGS: 00010206
> eax: 00000000 ebx: 00000000 ecx: 00000dff edx: cfd97dc0
> esi: cf9ff000 edi: cf9a5cc0 ebp: 0014ce00 esp: ceed5f30
> ds: 0018 es: 0018 ss: 0018
> Process rpc.nfsd (pid: 207, process nr: 21, stackpage=ceed5000)
> Stack: cb4848e0 cfad9ac0 00000000 cf977400 00000000 00000dff 00000000 cfae1ec0
> c0142923 c593c770 0014ce00 00000007 c0141844 c593c770 c0128ef7 c593c770
> c83857a0 c83857a0 00000000 cb4848e0 c012a16b c83857a0 c83857a0 c83857a0
> Call Trace: [<c0142923>] [<c0141844>] [<c0128ef7>] [<c012a16b>] [<c0128f7a>] [<c0128ff3>]
> [<c010a1c0>]
>
> ------ Kernel disassembly
>
> 0xc013fc09 <ext2_free_blocks+409>: call 0xc0145ad8 <ext2_panic>
> 0xc013fc0e <ext2_free_blocks+414>: mov %esi,%esi
> 0xc013fc10 <ext2_free_blocks+416>: xor %ebx,%ebx
> 0xc013fc12 <ext2_free_blocks+418>: cmp %ebx,0x34(%esp,1)
> 0xc013fc16 <ext2_free_blocks+422>: jbe 0xc013fc81 <ext2_free_blocks+529>
> 0xc013fc18 <ext2_free_blocks+424>: mov 0x1c(%esp,1),%ecx
> 0xc013fc1c <ext2_free_blocks+428>: add %ebx,%ecx
> 0xc013fc1e <ext2_free_blocks+430>: mov 0x20(%esp,1),%eax
> 0xc013fc22 <ext2_free_blocks+434>: mov 0x24(%eax),%edx
> 0xc013fc25 <ext2_free_blocks+437>: lock btr %ecx,(%edx)
> 0xc013fc29 <ext2_free_blocks+441>: sbb %eax,%eax
> 0xc013fc2b <ext2_free_blocks+443>: test %eax,%eax
> 0xc013fc2d <ext2_free_blocks+445>: jne 0xc013fc48 <ext2_free_blocks+472>
> 0xc013fc2f <ext2_free_blocks+447>: push %ebp
> 0xc013fc30 <ext2_free_blocks+448>: push $0xc01d643d
> 0xc013fc35 <ext2_free_blocks+453>: push $0xc01d63f2
> 0xc013fc3a <ext2_free_blocks+458>: push %esi
> 0xc013fc3b <ext2_free_blocks+459>: call 0xc0145b78 <ext2_warning>
> 0xc013fc40 <ext2_free_blocks+464>: add $0x10,%esp
>
> ------ Backtrace disassembly (1): ext2_discard_preload (<c0142923>)
>
> Dump of assembler code for function ext2_discard_prealloc:
> 0xc01428f8 <ext2_discard_prealloc>: mov 0x4(%esp,1),%edx
> 0xc01428fc <ext2_discard_prealloc+4>: mov 0x104(%edx),%eax
> 0xc0142902 <ext2_discard_prealloc+10>: test %eax,%eax
> 0xc0142904 <ext2_discard_prealloc+12>: je 0xc0142926 <ext2_discard_prealloc+46>
> 0xc0142906 <ext2_discard_prealloc+14>: movl $0x0,0x104(%edx)
> 0xc0142910 <ext2_discard_prealloc+24>: and $0xffff,%eax
> 0xc0142915 <ext2_discard_prealloc+29>: push %eax
> 0xc0142916 <ext2_discard_prealloc+30>: mov 0x100(%edx),%eax
> 0xc014291c <ext2_discard_prealloc+36>: push %eax
> 0xc014291d <ext2_discard_prealloc+37>: push %edx
> >> 0xc014291e <ext2_discard_prealloc+38>: call 0xc013fa70 <ext2_free_blocks>
> 0xc0142923 <ext2_discard_prealloc+43>: add $0xc,%esp
> 0xc0142926 <ext2_discard_prealloc+46>: ret
> 0xc0142927 <ext2_discard_prealloc+47>: nop
> End of assembler dump.
>
> ------ Backtrace disassembly (2) : ext2_release_file <c0141844>
>
> Dump of assembler code for function ext2_release_file:
> 0xc0141830 <ext2_release_file>: mov 0x4(%esp,1),%edx
> 0xc0141834 <ext2_release_file+4>: mov 0x8(%esp,1),%eax
> 0xc0141838 <ext2_release_file+8>: testb $0x2,0x10(%eax)
> 0xc014183c <ext2_release_file+12>: je 0xc0141847 <ext2_release_file+23>
> 0xc014183e <ext2_release_file+14>: push %edx
> >> 0xc014183f <ext2_release_file+15>: call 0xc01428f8 <ext2_discard_prealloc>
> 0xc0141844 <ext2_release_file+20>: add $0x4,%esp
> 0xc0141847 <ext2_release_file+23>: xor %eax,%eax
> 0xc0141849 <ext2_release_file+25>: ret
> 0xc014184a <ext2_release_file+26>: mov %esi,%esi
> End of assembler dump.
>
> ------ FROM fs/ext2/balloc.s (with -g)
>
> cmpl %ebx,52(%esp)
> jbe .L1558
> .align 4
> .L1560:
> .stabn 68,0,321,.LM114-ext2_free_blocks
> .LM114:
> .LBB10:
> .stabs "/usr/src/linux/include/asm/bitops.h",132,0,0,.Ltext5
> .Ltext5:
> .stabn 68,0,80,.LM115-ext2_free_blocks
> .LM115:
> movl 28(%esp),%ecx
> addl %ebx,%ecx
> movl 32(%esp),%eax
> movl 36(%eax),%edx
> .stabn 68,0,81,.LM116-ext2_free_blocks
> .LM116:
> .LBB11:
> .stabn 68,0,83,.LM117-ext2_free_blocks
> .LM117:
> #APP
> lock ; btrl %ecx,(%edx)
> sbbl %eax,%eax
> #NO_APP
> .stabn 68,0,88,.LM118-ext2_free_blocks
> .LM118:
> .LBE11:
> .LBE10:
> .stabs "fs/ext2/balloc.c",132,0,0,.Ltext6
> .Ltext6:
> .stabn 68,0,321,.LM119-ext2_free_blocks
> .LM119:
> testl %eax,%eax
> jne .L1561
>
> ------- END balloc.s
--------------24E6256D63F2E64FC5D5CB46
Content-Type: text/plain; charset=us-ascii;
name="KERNEL"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="KERNEL"

Unable to handle kernel NULL pointer dereference at virtual address 00000024
current->tss.cr3 = 0eed3000, %cr3 = 0eed3000
*pde = 00000000
Oops: 0000
CPU: 0
EIP: 0010:[<c013fc22>]
EFLAGS: 00010206
eax: 00000000 ebx: 00000000 ecx: 00000dff edx: cfd97dc0
esi: cf9ff000 edi: cf9a5cc0 ebp: 0014ce00 esp: ceed5f30
ds: 0018 es: 0018 ss: 0018
Process rpc.nfsd (pid: 207, process nr: 21, stackpage=ceed5000)
Stack: cb4848e0 cfad9ac0 00000000 cf977400 00000000 00000dff 00000000 cfae1ec0
c0142923 c593c770 0014ce00 00000007 c0141844 c593c770 c0128ef7 c593c770
c83857a0 c83857a0 00000000 cb4848e0 c012a16b c83857a0 c83857a0 c83857a0
Call Trace: [<c0142923>] [<c0141844>] [<c0128ef7>] [<c012a16b>] [<c0128f7a>] [<c0128ff3>]
[<c010a1c0>]

------ Kernel disassembly

0xc013fc09 <ext2_free_blocks+409>: call 0xc0145ad8 <ext2_panic>
0xc013fc0e <ext2_free_blocks+414>: mov %esi,%esi
0xc013fc10 <ext2_free_blocks+416>: xor %ebx,%ebx
0xc013fc12 <ext2_free_blocks+418>: cmp %ebx,0x34(%esp,1)
0xc013fc16 <ext2_free_blocks+422>: jbe 0xc013fc81 <ext2_free_blocks+529>
0xc013fc18 <ext2_free_blocks+424>: mov 0x1c(%esp,1),%ecx
0xc013fc1c <ext2_free_blocks+428>: add %ebx,%ecx
0xc013fc1e <ext2_free_blocks+430>: mov 0x20(%esp,1),%eax
0xc013fc22 <ext2_free_blocks+434>: mov 0x24(%eax),%edx
0xc013fc25 <ext2_free_blocks+437>: lock btr %ecx,(%edx)
0xc013fc29 <ext2_free_blocks+441>: sbb %eax,%eax
0xc013fc2b <ext2_free_blocks+443>: test %eax,%eax
0xc013fc2d <ext2_free_blocks+445>: jne 0xc013fc48 <ext2_free_blocks+472>
0xc013fc2f <ext2_free_blocks+447>: push %ebp
0xc013fc30 <ext2_free_blocks+448>: push $0xc01d643d
0xc013fc35 <ext2_free_blocks+453>: push $0xc01d63f2
0xc013fc3a <ext2_free_blocks+458>: push %esi
0xc013fc3b <ext2_free_blocks+459>: call 0xc0145b78 <ext2_warning>
0xc013fc40 <ext2_free_blocks+464>: add $0x10,%esp

------ Backtrace disassembly (1): ext2_discard_preload (<c0142923>)

Dump of assembler code for function ext2_discard_prealloc:
0xc01428f8 <ext2_discard_prealloc>: mov 0x4(%esp,1),%edx
0xc01428fc <ext2_discard_prealloc+4>: mov 0x104(%edx),%eax
0xc0142902 <ext2_discard_prealloc+10>: test %eax,%eax
0xc0142904 <ext2_discard_prealloc+12>: je 0xc0142926 <ext2_discard_prealloc+46>
0xc0142906 <ext2_discard_prealloc+14>: movl $0x0,0x104(%edx)
0xc0142910 <ext2_discard_prealloc+24>: and $0xffff,%eax
0xc0142915 <ext2_discard_prealloc+29>: push %eax
0xc0142916 <ext2_discard_prealloc+30>: mov 0x100(%edx),%eax
0xc014291c <ext2_discard_prealloc+36>: push %eax
0xc014291d <ext2_discard_prealloc+37>: push %edx
>> 0xc014291e <ext2_discard_prealloc+38>: call 0xc013fa70 <ext2_free_blocks>
0xc0142923 <ext2_discard_prealloc+43>: add $0xc,%esp
0xc0142926 <ext2_discard_prealloc+46>: ret
0xc0142927 <ext2_discard_prealloc+47>: nop
End of assembler dump.

------ Backtrace disassembly (2) : ext2_release_file <c0141844>

Dump of assembler code for function ext2_release_file:
0xc0141830 <ext2_release_file>: mov 0x4(%esp,1),%edx
0xc0141834 <ext2_release_file+4>: mov 0x8(%esp,1),%eax
0xc0141838 <ext2_release_file+8>: testb $0x2,0x10(%eax)
0xc014183c <ext2_release_file+12>: je 0xc0141847 <ext2_release_file+23>
0xc014183e <ext2_release_file+14>: push %edx
>> 0xc014183f <ext2_release_file+15>: call 0xc01428f8 <ext2_discard_prealloc>
0xc0141844 <ext2_release_file+20>: add $0x4,%esp
0xc0141847 <ext2_release_file+23>: xor %eax,%eax
0xc0141849 <ext2_release_file+25>: ret
0xc014184a <ext2_release_file+26>: mov %esi,%esi
End of assembler dump.

------ FROM fs/ext2/balloc.s (with -g)

cmpl %ebx,52(%esp)
jbe .L1558
.align 4
.L1560:
.stabn 68,0,321,.LM114-ext2_free_blocks
.LM114:
.LBB10:
.stabs "/usr/src/linux/include/asm/bitops.h",132,0,0,.Ltext5
.Ltext5:
.stabn 68,0,80,.LM115-ext2_free_blocks
.LM115:
movl 28(%esp),%ecx
addl %ebx,%ecx
movl 32(%esp),%eax
movl 36(%eax),%edx
.stabn 68,0,81,.LM116-ext2_free_blocks
.LM116:
.LBB11:
.stabn 68,0,83,.LM117-ext2_free_blocks
.LM117:
#APP
lock ; btrl %ecx,(%edx)
sbbl %eax,%eax
#NO_APP
.stabn 68,0,88,.LM118-ext2_free_blocks
.LM118:
.LBE11:
.LBE10:
.stabs "fs/ext2/balloc.c",132,0,0,.Ltext6
.Ltext6:
.stabn 68,0,321,.LM119-ext2_free_blocks
.LM119:
testl %eax,%eax
jne .L1561

------- END balloc.s

--------------24E6256D63F2E64FC5D5CB46--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/