I've gotten the following crash in xfs_inactive a few times after pushing a
server very hard running the SPEC SFS NFS test. This crash doesn't happen
every time unfortunately.
Unable to handle kernel NULL pointer dereference at virtual address 00000008
801c932e
*pde = 72db8001
Oops: 0000
CPU: 2
EIP: 0010:[<801c932e>] Not tainted
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010202
eax: 801c929c ebx: bc0139a0 ecx: 00000001 edx: 000081b6
esi: f7746000 edi: 00000000 ebp: bc0139b8 esp: f7bd9ee8
ds: 0018 es: 0018 ss: 0018
Process kswapd (pid: 7, stackpage=f7bd9000)
Stack: b335bc40 f7bd9f58 b9f1e328 f7bd9f60 00000000 00000296 c4bc8c80
801da3e9
bc0139b8 00000000 b335bc40 801d9348 b335bc40 b335bc60 8014ca1e
b335bc60
b335bc60 8014caa4 b335bc60 d5bf0dc0 d5bf0dc8 8014cdd4 f7bd9f58
00000013
Call Trace: [<801da3e9>] [<801d9348>] [<8014ca1e>] [<8014caa4>]
[<8014cdd4>]
[<8014ce0f>] [<8012fce7>] [<8012fd3c>] [<8012fe41>] [<8012fea6>]
[<8012ff
Code: 8b 47 08 f6 00 01 0f 85 80 03 00 00 83 bb 34 01 00 00 00 0f
>>EIP; 801c932e <xfs_inactive+92/428> <=====
>>eax; 801c929c <xfs_inactive+0/428>
>>ebx; bc0139a0 <END_OF_CODE+3bc11c1c/????>
>>edx; 000081b6 Before first symbol
>>esi; f7746000 <END_OF_CODE+7734427c/????>
>>ebp; bc0139b8 <END_OF_CODE+3bc11c34/????>
>>esp; f7bd9ee8 <END_OF_CODE+777d8164/????>
Trace; 801da3e9 <vn_rele+35/84>
Trace; 801d9348 <linvfs_clear_inode+10/1c>
Trace; 8014ca1e <clear_inode+a2/e0>
Trace; 8014caa4 <dispose_list+48/60>
Trace; 8014cdd4 <prune_icache+190/1b0>
Trace; 8014ce0f <shrink_icache_memory+1b/30>
Trace; 8012fce7 <shrink_caches+8f/a8>
Trace; 8012fd3c <try_to_free_pages_zone+3c/5c>
Trace; 8012fe41 <kswapd_balance_pgdat+41/8c>
Trace; 8012fea6 <kswapd_balance+1a/30>
Code; 801c932e <xfs_inactive+92/428>
00000000 <_EIP>:
Code; 801c932e <xfs_inactive+92/428> <=====
0: 8b 47 08 mov 0x8(%edi),%eax <=====
Code; 801c9331 <xfs_inactive+95/428>
3: f6 00 01 testb $0x1,(%eax)
Code; 801c9334 <xfs_inactive+98/428>
6: 0f 85 80 03 00 00 jne 38c <_EIP+0x38c>
Code; 801c933a <xfs_inactive+9e/428>
c: 83 bb 34 01 00 00 00 cmpl $0x0,0x134(%ebx)
Code; 801c9341 <xfs_inactive+a5/428>
13: 0f 00 00 sldtl (%eax)
The code in question is derefencing the vp->v_vfsp pointer and failing
because the vp pointer is NULL for some scary unknown reason:
Dissassembly of xfs_inactive:
/src/kernel/linux/fs/xfs/xfs_vnodeops.c:1666
error = 0;
/* If this is a read-only mount, don't do this (would generate I/O)
*/
if (vp->v_vfsp->vfs_flag & VFS_RDONLY)
801c932e: 8b 47 08 mov 0x8(%edi),%eax
801c9331: f6 00 01 testb $0x1,(%eax)
801c9334: 0f 85 80 03 00 00 jne 801c96ba <xfs_inactive+0x41e>
We're running 2.4.20 with XFS CVS from March 17th. I did see this crash on
earlier CVS downloads, but wanted to see the crash a few more times before
mentioning it.
Erik Habbinga
|