Date: Sun, 11 Aug 1996 06:22:30 +1000 From: Bruce Evans <bde@zeta.org.au> To: freebsd-current@FreeBSD.org, j@uriah.heep.sax.de Cc: fenner@parc.xerox.com Subject: Re: Crash in rtrequest() Message-ID: <199608102022.GAA07492@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
>Anyway, the stacktrace i've been quoting was fairly complete:
>(kgdb) backtrace
>[...]
>#10 0xf01bab61 in calltrap ()
>#11 0xf0143967 in rt_setgate (rt0=0xf0f39800, dst=0xf0f3a730, gate=0xf0e17450)
> at ../../net/route.c:682
>#12 0xf01435be in rtrequest (req=11, dst=0xf0f3a730, gateway=0x0, netmask=0x0,
> flags=0, ret_nrt=0xefbffe68) at ../../net/route.c:468
>#13 0xf0142f21 in rtalloc1 (dst=0xf0f3a730, report=1, ignflags=0)
> at ../../net/route.c:130
>#14 0xf0142e6b in rtalloc (ro=0xf0f3a72c) at ../../net/route.c:98
>#15 0xf01490fd in in_pcbladdr ()
>#16 0xf015197e in tcp_connect ()
>#17 0xf0151363 in tcp_usr_connect ()
>#18 0xf012458f in soconnect ()
>#19 0xf01270ef in connect ()
>[...]
>The ``calltrap'' is actually the crashing instance of rtrequest(), but
The bogus backtrace was supposed to be fixed in rev.1.10 of i386/exception.s,
but the fix got deleted in rev.1.14. Backtraces for NULL pointers and the
like will always show `calltrap' instead of the routine where the fault
occurred until this is fixed.
>rt_setgate() has been called by another instance of rtrequest:
> makeroute:
> R_Malloc(rt, struct rtentry *, sizeof(*rt));
> if (rt == 0)
> senderr(ENOBUFS);
> Bzero(rt, sizeof(*rt));
> rt->rt_flags = RTF_UP | flags;
> if (rt_setgate(rt, dst, gateway)) { <<=== here
> Free(rt);
> senderr(ENOBUFS);
> }
Apparently rt_key(rt0) is NULL in rt_setgate().
Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199608102022.GAA07492>
