Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 Jul 2000 14:50:45 +0100
From:      Brian Somers <brian@Awfulhak.org>
To:        Udo Erdelhoff <ue@nathan.ruhr.de>
Cc:        freebsd-current@FreeBSD.org, brian@storm.FreeBSD.org.uk
Subject:   Re: ppp-related panic in sbdrop() 
Message-ID:  <200007121350.OAA11795@hak.lan.Awfulhak.org>
In-Reply-To: Message from Udo Erdelhoff <ue@nathan.ruhr.de>  of "Tue, 11 Jul 2000 17:34:30 %2B0200." <20000711173429.A247@nathan.ruhr.de> 

next in thread | previous in thread | raw e-mail | index | archive | help
I'd like to disclaim all responsibility :-I

I'd normally try to figure out what the problem is or ask for more =

info, but seen as ppp caused a kernel panic on me this morning on the =

train, and since then cvsup has caused a similar panic, htc panics =

and just about anything else interesting I do panics, I tend to =

suspect it's nothing to do with (user-land) ppp....

I'm trying to rebuild my machine by cvs update -D'ing to before the =

snapshot code commit at the moment....

> Hi,
> I've finally managed to capture a crashdump after a panic in sbdrop(). =
The
> machine in question uses ppp/ipfw/natd to connect a small LAN to the
> outside world via a DSL link. ppp started to misbehave: NS queries were=

> sent out but didn't come back (I had tcpdumps running on both tun0 and
> ed1). I tried to terminate ppp by sending a SIGTERM. ppp (pid 78) was
> still around after a minute, so I send a SIGTERM. The machine crashed
> immediately.
> =

> The machine world as of 7/7, I've only added the latest type fix to
> ppp/bundle.c (rev 1.99).
> =

> The point of doom:
> =

> bash# gdb -k /sys/compile/UE/kernel.debug /var/crash/vmcore.0 =

> GNU gdb 4.18
> Copyright 1998 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and yo=
u are
> welcome to change it and/or distribute copies of it under certain condi=
tions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for deta=
ils.
> This GDB was configured as "i386-unknown-freebsd"...
> IdlePTD 3952640
> initial pcb at 325320
> panicstr: sbdrop
> panic messages:
> ---
> panic: sbdrop
> =

> syncing disks... =

> done
> Uptime: 1h4m5s
> =

> dumping to dev #da/0x20001, offset 190228
> dump 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 =
42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 1=
8 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 =

> ---
> #0  boot (howto=3D256) at ../../kern/kern_shutdown.c:303
> 303			dumppcb.pcb_cr3 =3D rcr3();
> (kgdb) wwhheerree
> #0  boot (howto=3D256) at ../../kern/kern_shutdown.c:303
> #1  0xc01717f4 in poweroff_wait (junk=3D0xc02b3a26, howto=3D-946356848)=

>     at ../../kern/kern_shutdown.c:553
> #2  0xc01931c8 in sbdrop (sb=3D0xc797bd90, len=3D158)
>     at ../../kern/uipc_socket2.c:793
> #3  0xc0193058 in sbflush (sb=3D0xc797bd90) at ../../kern/uipc_socket2.=
c:772
> #4  0xc0192b11 in sbrelease (sb=3D0xc797bd90, so=3D0xc6d59b40)
>     at ../../kern/uipc_socket2.c:455
> #5  0xc0191443 in sorflush (so=3D0xc6d59b40) at ../../kern/uipc_socket.=
c:988
> #6  0xc01900ad in sofree (so=3D0xc6d59b40) at ../../kern/uipc_socket.c:=
262
> #7  0xc01901de in soclose (so=3D0xc6d59b40) at ../../kern/uipc_socket.c=
:327
> #8  0xc018553a in soo_close (fp=3D0xc0f8fe40, p=3D0xc74b32a0)
>     at ../../kern/sys_socket.c:193
> #9  0xc0166165 in fdrop (fp=3D0xc0f8fe40, p=3D0xc74b32a0) at ../../sys/=
file.h:212
> #10 0xc01660ab in closef (fp=3D0xc0f8fe40, p=3D0xc74b32a0)
>     at ../../kern/kern_descrip.c:1079
> #11 0xc0165dfc in fdfree (p=3D0xc74b32a0) at ../../kern/kern_descrip.c:=
945
> #12 0xc016854d in exit1 (p=3D0xc74b32a0, rv=3D9) at ../../kern/kern_exi=
t.c:186
> #13 0xc01732d2 in sigexit (p=3D0xc74b32a0, sig=3D9) at ../../kern/kern_=
sig.c:1499
> #14 0xc017304c in postsig (sig=3D9) at ../../kern/kern_sig.c:1402
> #15 0xc028e6f0 in syscall2 (frame=3D{tf_fs =3D 47, tf_es =3D 47, tf_ds =
=3D 47, =

>       tf_edi =3D -1077940036, tf_esi =3D 134920284, tf_ebp =3D -1077940=
004, =

>       tf_isp =3D -946356268, tf_ebx =3D 672838652, tf_edx =3D 134909952=
, =

>       tf_ecx =3D 2048, tf_eax =3D 29, tf_trapno =3D 7, tf_err =3D 2, =

>       tf_eip =3D 673074366, tf_cs =3D 31, tf_eflags =3D 647, tf_esp =3D=
 -1077940096, =

>       tf_ss =3D 47}) at ../../i386/i386/trap.c:164
> #16 0xc02838f5 in Xint0x80_syscall ()
> #17 0x80781c6 in ?? ()
> #18 0x806eaa9 in ?? ()
> #19 0x806e1fb in ?? ()
> #20 0x8078778 in ?? ()
> #21 0x805996f in ?? ()
> #22 0x804ccd8 in ?? ()
> #23 0x806a776 in ?? ()
> #24 0x806a35f in ?? ()
> #25 0x804b0a1 in ?? ()
> (kgdb) frame 2
> #2  0xc01931c8 in sbdrop (sb=3D0xc797bd90, len=3D158)
>     at ../../kern/uipc_socket2.c:793
> 793					panic("sbdrop");
> (kgdb) print sb
> $1 =3D (struct sockbuf *) 0xc797bd90
> (kgdb) print *sb
> $2 =3D {sb_cc =3D 158, sb_hiwat =3D 20480, sb_mbcnt =3D 512, sb_mbmax =3D=
 163840, =

>   sb_lowat =3D 1, sb_mb =3D 0x0, sb_sel =3D {si_pid =3D 0, si_note =3D =
{
>       slh_first =3D 0x0}, si_flags =3D 0}, sb_flags =3D 64, sb_timeo =3D=
 0}
> (kgdb) print len
> $3 =3D 158
> (kgdb) print m
> $4 =3D (struct mbuf *) 0xc02b3a26
> (kgdb) print *m
> $5 =3D {m_hdr =3D {mh_next =3D 0x72646273, mh_nextpkt =3D 0x4e00706f, =

>     mh_data =3D 0x63706900 <Address 0x63706900 out of bounds>, =

>     mh_len =3D -1377828864, mh_type =3D -16336, mh_flags =3D 73}, M_dat=
 =3D {MH =3D {
>       MH_pkthdr =3D {rcvif =3D 0x6d6d7564, len =3D -1373634439, =

>         header =3D 0x616dc030 <Address 0x616dc030 out of bounds>, =

>         csum_flags =3D 1668248440, csum_data =3D 1718968939, aux =3D 0x=
ae600000}, =

>       MH_dat =3D {MH_ext =3D {
>           ext_buf =3D 0x616dc030 <Address 0x616dc030 out of bounds>, =

>           ext_free =3D 0x636f7378, ext_size =3D 1937007979, ext_ref =3D=
 0xaea00000}, =

>         MH_databuf =3D "0=C0maxsockets\000\000=A0=AE0=C0sockbuf_waste_f=
actor\000\000\000\000=E0=AE0=C0kern.ipc.maxsockets\000\004=AF0=C0\000\000=
\000\000\000\000\000\000\024=AF0=C0accept\000connec\000sfbufa\000\000\000=
\000\000\000\000\000sf_buf_ref: referencing a free sf_buf", '\000' <repea=
ts 27 times>, "sf_buf_free: freeing free sf_buf\000sfpbs"}}, =

>     M_databuf =3D "dummy\000 =AE0=C0maxsockbuf\000\000`=AE0=C0maxsocket=
s\000\000=A0=AE0=C0sockbuf_waste_factor\000\000\000\000=E0=AE0=C0kern.ipc=
=2Emaxsockets\000\004=AF0=C0\000\000\000\000\000\000\000\000\024=AF0=C0ac=
cept\000connec\000sfbufa\000\000\000\000\000\000\000\000sf_buf_ref: refer=
encing a free sf_buf", '\000' <repeats 27 times>, "sf_buf_free: freein"..=
=2E}}
> (kgdb) print mn
> $6 =3D (struct mbuf *) 0xc02b3a26
> (kgdb) print *mn
> $7 =3D {m_hdr =3D {mh_next =3D 0x72646273, mh_nextpkt =3D 0x4e00706f, =

>     mh_data =3D 0x63706900 <Address 0x63706900 out of bounds>, =

>     mh_len =3D -1377828864, mh_type =3D -16336, mh_flags =3D 73}, M_dat=
 =3D {MH =3D {
>       MH_pkthdr =3D {rcvif =3D 0x6d6d7564, len =3D -1373634439, =

>         header =3D 0x616dc030 <Address 0x616dc030 out of bounds>, =

>         csum_flags =3D 1668248440, csum_data =3D 1718968939, aux =3D 0x=
ae600000}, =

>       MH_dat =3D {MH_ext =3D {
>           ext_buf =3D 0x616dc030 <Address 0x616dc030 out of bounds>, =

>           ext_free =3D 0x636f7378, ext_size =3D 1937007979, ext_ref =3D=
 0xaea00000}, =

>         MH_databuf =3D "0=C0maxsockets\000\000=A0=AE0=C0sockbuf_waste_f=
actor\000\000\000\000=E0=AE0=C0kern.ipc.maxsockets\000\004=AF0=C0\000\000=
\000\000\000\000\000\000\024=AF0=C0accept\000connec\000sfbufa\000\000\000=
\000\000\000\000\000sf_buf_ref: referencing a free sf_buf", '\000' <repea=
ts 27 times>, "sf_buf_free: freeing free sf_buf\000sfpbs"}}, =

>     M_databuf =3D "dummy\000 =AE0=C0maxsockbuf\000\000`=AE0=C0maxsocket=
s\000\000=A0=AE0=C0sockbuf_waste_factor\000\000\000\000=E0=AE0=C0kern.ipc=
=2Emaxsockets\000\004=AF0=C0\000\000\000\000\000\000\000\000\024=AF0=C0ac=
cept\000connec\000sfbufa\000\000\000\000\000\000\000\000sf_buf_ref: refer=
encing a free sf_buf", '\000' <repeats 27 times>, "sf_buf_free: freein"..=
=2E}}
> (kgdb) print next
> $8 =3D (struct mbuf *) 0x0
> =

> The "adress out of bounds" messages looks strange.
> =

> I'll try to reproduce the bug after updating kernel, sources and world.=

> I have stored the kernel, modules (build with kernel, only ng_ether use=
d)
> and the dump on tape so I should be able to produce additional details =
if
> needed.
> =

> /s/Udo
> PS: One strange thing about dumping: savecore never found a dump during=

> "normal" startup. After this crash, I booted single-user, fsck'ed and
> mount'ed my filesystems, set the dump device, called savecore and voila=
,
> one crashdump stored in /var/crash. The machine has 64 MBytes of RAM
> and 156 MByte swap (da0s1b).
> =

> -- =

> Getting a SCSI chain working is perfectly simple if you remember that t=
here
> must be exactly three terminations: one on one end of the cable, one on=
 the
> far end, and the goat, terminated over the SCSI chain with a silver-han=
dled
> knife whilst burning *black* candles.

-- =

Brian <brian@Awfulhak.org>                        <brian@[uk.]FreeBSD.org=
>
      <http://www.Awfulhak.org>;                   <brian@[uk.]OpenBSD.org=
>
Don't _EVER_ lose your sense of humour !




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




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