From owner-freebsd-current Sun Jan 21 20:52:13 1996 Return-Path: owner-current Received: (from root@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id UAA07866 for current-outgoing; Sun, 21 Jan 1996 20:52:13 -0800 (PST) Received: from mpp.minn.net (root@mpp.Minn.Net [204.157.201.242]) by freefall.freebsd.org (8.7.3/8.7.3) with ESMTP id UAA07860 for ; Sun, 21 Jan 1996 20:52:09 -0800 (PST) Received: (from mpp@localhost) by mpp.minn.net (8.7.3/8.6.9) id WAA00260 for freebsd-current@freebsd.org; Sun, 21 Jan 1996 22:52:02 -0600 (CST) Message-Id: <199601220452.WAA00260@mpp.minn.net> Subject: Re: Fatal double fault To: freebsd-current@freebsd.org Date: Sun, 21 Jan 1996 22:52:02 -0600 (CST) From: "Mike Pritchard" In-Reply-To: <199601220259.UAA00228@mpp.minn.net> from "Mike Pritchard" at Jan 21, 96 08:59:23 pm X-Mailer: ELM [version 2.4 PL25 ME8b] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-current@freebsd.org Precedence: bulk Mike Pritchard wrote: > > The interesting this is that my machine died just at the same point > where I've been having lockups when starting my PPP connection. > For the past several days or so I've been getting lockup where > everything is sleeping on "lockrd" (something in the vm code) > just as my PPP connection is established. I suspect that the above > crash is related. After some playing around, I came up with a little shell script that will lock my machine up consistently, although it doesn't look like the same hang as above. If you run about 4 of these: #!/bin/sh while [ 1 ] do ( ifconfig ppp0 up ipfw addf ldeny all from 10.1.1.1 via ppp0 ) & ( ifconfig ppp0 inet 204.157.201.242 204.157.201.18 down ipfw flush firewall >/dev/null 2>&1 /dev/null & ) done the machine will eventually lock up. A little poking around with the debugger shows that it is looping in netinet/in.c in in_control, around line 390 or so: /* * Multicast address kludge: * If there were any multicast addresses attached to this * interface address, either move them to another address * on this interface, or save them until such time as this * interface is reconfigured for IP. */ IFP_TO_IA(oia->ia_ifp, ia); if (ia) { /* there is another address */ struct in_multi *inm; for(inm = oia->ia_multiaddrs.lh_first; inm; inm = inm->inm_entry.le_next) { IFAFREE(&inm->inm_ia->ia_ifa); ia->ia_ifa.ifa_refcnt++; inm->inm_ia = ia; LIST_INSERT_HEAD(&ia->ia_multiaddrs, inm, inm_entry); } FREE(mk, M_IPMADDR); } else { /* last address on this if deleted, save */ struct in_multi *inm; Here is some netstat & ifconfig output: Script started on Sun Jan 21 22:43:55 1996 1% netstat -rn Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire 127.0.0.1 127.0.0.1 UH 1 0 lo0 204.157.201.5 204.157.201.242 UH 0 0 ppp0 204.157.201.242 127.0.0.1 UGHS 0 0 lo0 224/4 204.157.201.242 US 0 0 ppp0 2% ifconfig ppp0 ppp0: flags=8010 mtu 1500 inet 204.157.201.242 --> 204.157.201.5 netmask 0xffffff00 3% exit Script done on Sun Jan 21 22:44:05 1996