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>