stanonik@NPRDC.ARPA (Ron Stanonik) (11/01/88)
Our vax 11/780 running 4.3bsd with an lhdh crashed shortly after "imp going down" and "imp marked down" messages. The error was a seg fault and as I read (or misread) the crash dump, the "marked down" message cleared the per imp hosttable (sc->imp_hosts) while impstart was trying to read it (actually impstart had handed the value to impstarthost, which is where we croaked). Does this sound familiar; ie, have we missed some bug fix? We are running the networking fixes that berkeley announced a while ago; eg, if_imp.c is version 7.5 6/8/88. Thanks, Ron Stanonik stanonik@nprdc.arpa
torek@OKEEFFE.BERKELEY.EDU (Chris Torek) (11/02/88)
Most likely you ran into the bug fixed below. This (and others) are fixed in the 4.3BSD-tahoe networking code, and probably in the upgrade for 4.3BSD that is (was?) on ucbarpa. Chris *** if_imphost.c.7.3 Tue Nov 1 13:10:09 1988 --- if_imphost.c.7.4 Tue Nov 1 13:10:18 1988 *************** *** 10,14 **** * is provided ``as is'' without express or implied warranty. * ! * @(#)if_imphost.c 7.3 (Berkeley) 2/8/88 */ --- 10,14 ---- * is provided ``as is'' without express or implied warranty. * ! * @(#)if_imphost.c 7.4 (Berkeley) 2/8/88 */ *************** *** 201,204 **** --- 201,205 ---- register struct mbuf *m; register struct host *hp, *lp; + struct imp_softc *sc; struct hmbuf *hm; int s = splimp(), unit, any; *************** *** 206,210 **** for (unit = 0; unit < NIMP; unit++) { any = 0; ! for (m = imp_softc[unit].imp_hosts; m; m = m->m_next) { hm = mtod(m, struct hmbuf *); hp = hm->hm_hosts; --- 207,212 ---- for (unit = 0; unit < NIMP; unit++) { any = 0; ! sc = &imp_softc[unit]; ! for (m = sc->imp_hosts; m; m = m->m_next) { hm = mtod(m, struct hmbuf *); hp = hm->hm_hosts; *************** *** 221,224 **** --- 223,228 ---- any = 1; hostrelease(hp); + if (sc->imp_hostq == m) + sc->imp_hostq = 0; } } *************** *** 225,230 **** } } ! if (any) hostcompress(unit); } splx(s); --- 229,235 ---- } } ! if (any) { hostcompress(unit); + } } splx(s);