Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 13 Dec 1997 21:50:21 +0000 (GMT)
From:      Terry Lambert <tlambert@primenet.com>
To:        totii@est.is (?or?ur Ivarsson)
Cc:        pb@fasterix.freenix.org, freebsd-current@FreeBSD.ORG
Subject:   Re: panics when stopping pppd
Message-ID:  <199712132150.OAA03369@usr06.primenet.com>
In-Reply-To: <3492A8DE.27B270DB@est.is> from "?or?ur Ivarsson" at Dec 13, 97 03:25:18 pm

next in thread | previous in thread | raw e-mail | index | archive | help
> > I have a problem when using -current /usr/sbin/pppd, which panics
> > the machine when pppd is killed at the end of the connection. It
> > doesn't happen quite every time I try: I once killed pppd just
> > after connecting and it didn't panic. It makes me think this might
> > have to do with dynamic routes (I'm running gated to announce the
> > route to my /28 subnet to the outside and receive several others
> > /28 routes).
> > 
> > I have no idea if this bug is recent or not, this machine was a
> > FreeBSD 2.2.2 until yesterday.
> > 
> > Here's the kernel stack trace (ctm patch 3166 or 3167).
> > 
> > #3  0xf0190db4 in trap_pfault ()
> > #4  0xf0190a1f in trap ()
> > #5  0x6e655000 in ?? ()
> > #6  0xf014dd3c in in_ifadownkill ()
> > #7  0xf0147740 in rn_walktree ()
> > #8  0xf014dd80 in in_ifadown ()
> > #9  0xf015470b in rip_ctlinput ()
> > #10 0xf0123c2d in pfctlinput ()
> > #11 0xf013f3c9 in if_down ()
> > #12 0xf013f716 in ifioctl ()
> > #13 0xf011b39e in soo_ioctl ()
> > #14 0xf0118d43 in ioctl ()
> > #15 0xf01915b3 in syscall ()

If you have a local ethernet, look at the variables that exist on your
stack to see if your local ethernet MAC address is there somewhere;
this looks remarkably similar to a crash I saw, but have not yet been
able to reproduce.  The crash resulted from some code somewhere writing
a remote MAC address, a local MAC addres, 0x8000, and a length of 0x20
(and an invalid family -- 0xff) -- basically, a struct sockaddr -- to
my kernel stack.

The current hypothesis is that something is writing a sockaddr at
interrupt time; this is a machine using the if_ed.c driver, but it
looks to be in the ARP or routing code.  Maybe it finally shot its
own foot off by writing the sockaddr to the wrong place, so it
wasn't there when it needed it?


					Terry Lambert
					terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.



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