1.3.98 get_hash_table Oops

Dan McLaughlin (drm@wagner.sr.hp.com)
Tue, 7 May 1996 09:16:34 -0700


Howdy,
Here's an oops on 1.3.98 that I've gotten. I've been getting oops's with
the get_hash_table function off and on for a long time now. This is on a
486 portable with 24 megs of ram (could it be related to suspending the
computer all the time?).

-Dan
-----------------------------------------------------------------------------
Unable to handle kernel NULL pointer dereference at virtual address c00001b8
current->tss.cr3 = 00788000, @r3 = 00788000
*pde = 00102067
*pte = 00000027
Oops: 0000
CPU: 0
EIP: 0010:[get_hash_table+48/208]
EFLAGS: 00010206
eax: 000001b8 ebx: 01730303 ecx: 00e336ac edx: 000027ac
esi: 0009673d edi: 00000303 ebp: 0009643e esp: 0026ded0
ds: 0018 es: 0018 fs: 002b gs: 002b ss: 0018
Process rm (pid: 5221, process nr: 48, stackpage=0026d000)
Stack: 0173bb18 00000000 0009643e 000000c6 00216dd0 00158b59 00000303 0009643e
00000400 00e38000 00e336ac 00000000 00000004 fffffff4 00000002 00000100
00000000 00000001 0009643d 005fac38 00159197 00e336ac 0000000c 00e33760
Call Trace: [trunc_indirect+281/752]
[ext2_truncate+87/352]
[ext2_put_inode+60/96]
[ext2_put_inode+82/96]
[iput+214/400]
[ext2_unlink+491/512]
[do_unlink+271/304]
[sys_unlink+38/64]
[system_call+89/160]
Code: 39 28 75 2c 66 39 58 04 75 26 8b 4c 24 20 39 48 20 74 26 57
-----------------------------------------------------------------------------

Here's the dissasembled vmlinux

0x124aa0 <get_hash_table>: subl $0x4,%esp
0x124aa3 <get_hash_table+3>: pushl %ebp
0x124aa4 <get_hash_table+4>: pushl %edi
0x124aa5 <get_hash_table+5>: pushl %esi
0x124aa6 <get_hash_table+6>: pushl %ebx
0x124aa7 <get_hash_table+7>: movl 0x1c(%esp,1),%ebp
0x124aab <get_hash_table+11>: movw 0x18(%esp,1),%bx
0x124ab0 <get_hash_table+16>: movzwl %bx,%edi
0x124ab3 <get_hash_table+19>: movl %edi,%esi
0x124ab5 <get_hash_table+21>: xorl %ebp,%esi
0x124ab7 <get_hash_table+23>: nop
0x124ab8 <get_hash_table+24>: movl %esi,%eax
0x124aba <get_hash_table+26>: xorl %edx,%edx
0x124abc <get_hash_table+28>: divl 0x18f058,%eax
0x124ac2 <get_hash_table+34>: movl 0x19952c,%eax
0x124ac7 <get_hash_table+39>: movl (%eax,%edx,4),%eax
0x124aca <get_hash_table+42>: testl %eax,%eax
0x124acc <get_hash_table+44>: je 0x124b07 <get_hash_table+103>
0x124ace <get_hash_table+46>: leal (%esi),%esi
0x124ad0 <get_hash_table+48>: cmpl %ebp,(%eax)
0x124ad2 <get_hash_table+50>: jne 0x124b00 <get_hash_table+96>
0x124ad4 <get_hash_table+52>: cmpw %bx,0x4(%eax)
0x124ad8 <get_hash_table+56>: jne 0x124b00 <get_hash_table+96>
0x124ada <get_hash_table+58>: movl 0x20(%esp,1),%ecx
0x124ade <get_hash_table+62>: cmpl %ecx,0x20(%eax)
0x124ae1 <get_hash_table+65>: je 0x124b09 <get_hash_table+105>
0x124ae3 <get_hash_table+67>: pushl %edi
0x124ae4 <get_hash_table+68>: call 0x124450 <kdevname>
0x124ae9 <get_hash_table+73>: pushl %eax
0x124aea <get_hash_table+74>: pushl $0x18140f
-----------------------------------------------------------------------------

Here's the disassembly of the Code section

<force_to_data>: cmpl %ebp,(%eax)
<str+2>: jne 0x800147c <__DTOR_END__+12>
<str+4>: cmpw %bx,0x4(%eax)
<str+8>: jne 0x800147c <__DTOR_END__+12>
<str+10>: movl 0x20(%esp,1),%ecx
<str+14>: cmpl %ecx,0x20(%eax)
<str+17>: je 0x8001485 <__DTOR_END__+21>
<str+19>: pushl %edi
<str+20>: addb %al,(%eax)
-----------------------------------------------------------------------------