lkml.org 
[lkml]   [1999]   [Sep]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectOops in 2.2.12 (ext2fs)

    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.sUnable 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


    \
     
     \ /
      Last update: 2005-03-22 13:54    [W:0.037 / U:0.128 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site