patch to fix symlink-related GPFs on Linux

Aaron M. Ucko amu at MIT.EDU
Sat Jul 25 22:28:17 CEST 1998


Magnus Ahltorp <map at stacken.kth.se> writes:

> > I loaded the module with xfsdeb set to 0xFFFFFFFF, but I didn't see
> > any unusual messages when it hung.
> 
> What are the last messages that you see? What happens if you do a
> Shift-Scroll lock and compare the IP with a loadmap or /proc/ksyms?

Oh, right, I forgot about the debugging keystrokes.  Here goes:

(Note: I had to write the messages down and type them back in, so
there may be minor formatting typos, but I'm pretty sure the numbers
are all right.)

kernel: xfs_lookup: name: apr1rfcs.gz (11) xfs_cache_lookup_dir: 03d35998
kernel: xfs_cache_lookup: empty entry
kernel: xfs_message_rpc opcode = 4
kernel: xfs_devread: m = 0481e904 m->prev = 0253a018 m->next = 0253a018
kernel: xfs_devread: first = 0253a018 first->prev = 0481e904 first->next = 0481e904
kernel: message->size = 292
arlad: Rec message: opcode = 4 (getnode), size = 292
arlad: Multi-send: opcode = 5 (installnode), size = 394
arlad: multi-sending wakeup: seq = 37, error = 0
kernel: xfs_devwrite
kernel: xfs_message_receive opcode = 5
kernel: xfs_message_installnode
kernel: xfs_node_find
kernel: new_xfs_node 0.537113399.480.30967
kernel: xfs_node_find
kernel: xfs_iget sb: 001f3fd4 node: 02e40134 newnode: 00f5f798

Right-Alt-ScrollLock always gave me one of these three dumps:

EIP: 0010:[<00124728>] EFLAGS: 00000206
EAX: 00000004 EBX: 03e34600 ECX: 001d493c EDX: 009cb414
ESI: 001e65bc EDI: 00000000 EBP: 001f3fd4 DS: 0018 ES: 0018 FS: 002b GS: 002b

EIP: 0010:[<0012473a>] EFLAGS: 00000216
EAX: 00000004 EBX: 03e34600 ECX: 001d493c EDX: 009cb414
ESI: 001e65bc EDI: 00000000 EBP: 001f3fd4 DS: 0018 ES: 0018 FS: 002b GS: 002b

EIP: 0010:[<0012473d>] EFLAGS: 00000216
EAX: 00000004 EBX: 03e34600 ECX: 001d493c EDX: 009cb414
ESI: 001e65bc EDI: 00000000 EBP: 001f3fd4 DS: 0018 ES: 0018 FS: 002b GS: 002b

The kernel appears to be spinning in this loop in __iget:

	for (inode = h->inode; inode ; inode = inode->i_hash_next)
		if (inode->i_dev == sb->s_dev && inode->i_ino == nr)
			goto found_it;

  124728:       66 39 03        cmpw   %ax,(%ebx)
  12472b:       75 0d           jne    12473a <__iget+0x4e>
  12472d:       8b 4c 24 1c     movl   0x1c(%esp,1),%ecx
  124731:       39 4b 04        cmpl   %ecx,0x4(%ebx)
  124734:       0f 84 fa 00 00  je     124834 <__iget+0x148>
  124739:       00 
  12473a:       8b 5b 6c        movl   0x6c(%ebx),%ebx
  12473d:       85 db           testl  %ebx,%ebx
  12473f:       75 e7           jne    124728 <__iget+0x3c>

-- 
Aaron M. Ucko, KB1CJC <amu at mit.edu> (finger amu at monk.mit.edu)





More information about the Arla-drinkers mailing list