Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Jan 1996 22:52:02 -0600 (CST)
From:      "Mike Pritchard" <mpp@mpp.minn.net>
To:        freebsd-current@freebsd.org
Subject:   Re: Fatal double fault
Message-ID:  <199601220452.WAA00260@mpp.minn.net>
In-Reply-To: <199601220259.UAA00228@mpp.minn.net> from "Mike Pritchard" at Jan 21, 96 08:59:23 pm

next in thread | previous in thread | raw e-mail | index | archive | help
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<POINTOPOINT,MULTICAST> 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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199601220452.WAA00260>