Re: Oops in 73

Michael L. Galbraith (mikeg@weiden.de)
Fri, 19 Dec 1997 19:32:19 +0100 (MET)


On Fri, 19 Dec 1997, Mario Mikocevic wrote:

> Hi,
>
> Unable to handle kernel paging request at virtual address 550cecc5
> current->tss.cr3 = 01ba4000, %cr3 = 01ba4000
> *pde = 00000000
> Oops: 0000
> CPU: 0
> EIP: 0010:[<c0164c0c>]
> EFLAGS: 00010002
> eax: 550cec83
> esi: c01a79d4
> ds: 0018
> Process ifconfig (pid: 95, process nr: 10, stackpage=c1bdd000)
> Stack: c01a3440 c01a79d4 00000000 00000049 550cec83 00000292 c019156e c014ae10
> c01a3440 00000001 c01a79d4 00000008 c01a79d4 00000000 c014b84e c01a79d4
> c0009400 c1bddf43 c0009422 c1bddf50 c01620c7 c01a79d4 00000049 00008914
> Call Trace: [<c019156e>] [<c014ae10>] [<c014b84e>] [<c01620e7>] [<c014c013>] [<c0163ac3>] [<c010ed1a>]
> [<c014641a>] [<c012db31>] [<c01099fe>]
> Code: 80 79 42 00 74 31 89 ca 83 c2 42 8b 74 24 18 89 d7 b9 10 00
>
> daniela# ksymoops /boot/System.map-2.1.73 < oops
> Using `/boot/System.map-2.1.73' to map addresses to symbols.
>
> >>EIP: c0164c0c <ipfw_device_event+3c/10c>
> Trace: c019156e <NR_TYPES+36e/2031>
> Trace: c014ae10 <dev_open+68/80>
> Trace: c014b84e <dev_change_flags+4e/e8>
> Trace: c01620e7 <devinet_ioctl+36b/6d4>
> Trace: c014c013 <dev_ioctl+297/460>
> Trace: c0163ac3 <inet_ioctl+45b/4cc>
> Trace: c010ed1a <do_page_fault+12e/31c>
> Trace: c014641a <sock_ioctl+1e/24>
> Trace: c012db31 <sys_ioctl+14d/160>
> Trace: c01099fe <system_call+3a/40>
> Code: c0164c0c <ipfw_device_event+3c/10c>
> Code: c0164c0c <ipfw_device_event+3c/10c> 80 79 42 00 cmpb $0x0,0x42(%ecx)
> Code: c0164c10 <ipfw_device_event+40/10c> 74 31 je c0164c43
> <ipfw_device_event+73/10c>
> Code: c0164c12 <ipfw_device_event+42/10c> 89 ca movl %ecx,%edxCode: c0164c14 <ipfw_device_event+44/10c> 83 c2 42 addl $0x42,%edx
> Code: c0164c1d <ipfw_device_event+4d/10c> 8b 74 24 18 movl 0x18(%esp,1),%esi
> Code: c0164c21 <ipfw_device_event+51/10c> 89 d7 movl %edx,%ediCode: c0164c23 <ipfw_device_event+53/10c> b9 10 00 00 90 movl $0x90000010,%ecx
> Code: c0164c2e <ipfw_device_event+5e/10c> 90 nop
> Code: c0164c2f <ipfw_device_event+5f/10c> 90 nop
>
>
> I can provide any more info if it's needed !
>
> --
> Mario Mikocevic (Mozgy)
> mozgy@zesoi.fer.hr
> |/-\| lschk error : FUBR !
>

I hate to say me too, but it appears to be identical in all details.

With or without assorted patches, same output. Are the 2,3 args as
reversed as they appear to be?.. or am I still blind?

Maybe the stack trace will help. I finally grocked that ktracer
was showing me exactly how the kernel prints an oops :-\, and asked
it to please not do that any more :)

Unable to handle kernel NULL pointer dereference at virtual address 00000004
current->tss.cr3 = 0450f000, `r3 = 0450f000
*pde = 00000000
Oops: 0000
CPU: 0
EIP: 0010:[<c019a773>]
EFLAGS: 00010046
eax: 00000004 ebx: 00000004 ecx: c024afcb edx: 00000001
esi: c03878e0 edi: 00000000 ebp: c462fea0 esp: c462fe84
ds: 0018 es: 0018 ss: 0018
Process ifconfig (pid: 63, process nr: 11, stackpage=c462f000)
Stack: c037d6bc c03878e0 00000000 00000000 00000286 c024afcb c03878e0 c462fec0
c0176ba0 c037d6bc 00000001 c03878e0 00000008 c03878e0 00000000 c462fed8
c01775ca c03878e0 c008b200 c03878e0 c008b222 c462ff58 c01968de c03878e0
Call Trace: [<c0176ba0>(0)] [<c01775ca>(32)] [<c01968de>(24)] [<c019858e>(128)] [<c0170e57>(36)] [<c013194d>(24)] [<c010a5a1>(40)] [<ffffffff>] [<c0111654>] [<c011102f>] [<c019a74f>] [<c0180b4a>] [<c019c4bf>] [<c0180b4a>] [<c01231bb>] [<c0126311>] [<c0126
4de>] [<c017416f>] [<c0173fe2>] [<c01b3367>] [<c022a943>] [<c0176077>] [<c022a943>] [<c0176077>] [<c022a943>] [<c0176077>] [<c019be5b>] [<c0126223>] [<c0123064>] [<c01264a6>] [<c0174037>] [<c019d3c4>] [<c0126223>] [<c0124c87>] [<c01229cb>] [<c0123064>] [<
c01264a6>] [<c01231bb>]
Code: 8b 00 89 45 f0 85 c0 74 47 8b 75 f0 80 7e 42 00 74 32 89 f2

[looks like libc++ broke again *very* recently, so... :]

0xc019a773 is in ipfw_device_event (ip_fw.c:1247).
1242 save_flags(flags);
1243 cli();
1244
1245 if (event == NETDEV_UP) {
1246 for (chn = 0; chn < IP_FW_CHAINS; chn++)
1247 for (fw = *chains[chn]; fw; fw = fw->fw_next)
0xc0176ba0 is in dev_open (/usr/src/linux/include/linux/notifier.h:72).
67 int ret=NOTIFY_DONE;
68 struct notifier_block *nb = *n;
69 while(nb)
70 {
71 ret=nb->notifier_call(nb,val,v);
72 if(ret&NOTIFY_STOP_MASK)
0xc01775ca is in dev_change_flags (dev.c:1177).
1172 if ((old_flags^flags)&IFF_UP) /* Bit is different ? */
1173 {
1174 if(old_flags&IFF_UP) /* Gone down */
1175 ret=dev_close(dev);
1176 else /* Come up */
1177 ret=dev_open(dev);
0xc01968de is in devinet_ioctl (devinet.c:483).
478 if (!(ifr.ifr_flags&IFF_UP))
479 inet_del_ifa(in_dev, ifap, 1);
480 break;
481 }
482 #endif
483 ret = dev_change_flags(dev, ifr.ifr_flags);
0xc019858e is in inet_ioctl (af_inet.c:906).
901 case SIOCGIFDSTADDR:
902 case SIOCSIFDSTADDR:
903 case SIOCSIFPFLAGS:
904 case SIOCGIFPFLAGS:
905 case SIOCSIFFLAGS:
906 return(devinet_ioctl(cmd,(void *) arg));
0xc0170e57 is in sock_ioctl (socket.c:457).
452 int sock_ioctl(struct inode *inode, struct file *file, unsigned int cmd,453 unsigned long arg)
454 {
455 struct socket *sock = socki_lookup(inode);
456 return sock->ops->ioctl(sock, cmd, arg);
457 }
0xc013194d is in sys_ioctl (ioctl.c:96).
91
92 default:
93 if (filp->f_dentry && filp->f_dentry->d_inode && S_ISREG(filp->f_dentry->d_inode->i_mode))
94 error = file_ioctl(filp, cmd, arg);
95 else if (filp->f_op && filp->f_op->ioctl)
96 error = filp->f_op->ioctl(filp->f_dentry->d_inode, filp, cmd, arg);

0xc010a5a1 <system_call+65>: movl %eax,0x18(%esp,1)
0xfffffffff

0xc0111654 is in search_exception_table (extable.c:35).
0xc011102f is in do_page_fault (fault.c:103).
0xc019a74f is in ipfw_device_event (ip_fw.c:1235).
0xc0180b4a is in rt_cache_flush (route.c:299).
0xc019c4bf is in fib_sync_up (fib_semantics.c:787).
0xc0180b4a is in rt_cache_flush (route.c:299).
0xc01231bb is in real_kfree (slab.c:1629).
0xc0126311 is in free_addr (memleak.c:132).
0xc01264de is in kfree_wrapper (memleak.c:209).
0xc017416f is in kfree_skbmem (skbuff.c:220).
0xc0173fe2 is in __kfree_skb (skbuff.c:96).
0xc01b3367 is in netlink_broadcast (af_netlink.c:423).
0xc022a943 is in __memcpy_g (copy.c:75).
0xc0176077 is in __rta_fill (rtnetlink.c:138).
0xc022a943 is in __memcpy_g (copy.c:75).
0xc0176077 is in __rta_fill (rtnetlink.c:138).
0xc022a943 is in __memcpy_g (copy.c:75).
0xc0176077 is in __rta_fill (rtnetlink.c:138).
0xc019be5b is in fib_dump_info (fib_semantics.c:542).
0xc0126223 is in alloc_addr (memleak.c:81).
0xc0123064 is in real_kmalloc (slab.c:1615).
0xc01264a6 is in kmalloc_wrapper (memleak.c:201).
0xc0174037 is in alloc_skb_wrap (skbuff.c:122)
0xc019d3c4 is in rtmsg_fib (fib_hash.c:706).
0xc0126223 is in alloc_addr (memleak.c:81).
0xc0124c87 is in real__get_free_pages (page_alloc.c:210).
0xc01229cb is in kmem_cache_grow (slab.c:1140).
0xc0123064 is in real_kmalloc (slab.c:1615).
0xc01264a6 is in kmalloc_wrapper (memleak.c:201).
0xc01231bb is in real_kfree (slab.c:1629).