On Tue, Dec 17, 2013 at 07:32:02PM -0500, RD Thrush wrote: > On 11/22/13 12:03, Stuart Henderson wrote: > > On 2013/11/22 08:47, RD Thrush wrote: > >> On 11/11/13 11:22, Stuart Henderson wrote: > >>> On 2013/11/11 09:53, RD Thrush wrote: > >>>>> Synopsis: Firewall panic with Nov 10 snapshot > >>>>> Category: kernel > >>>>> Environment: > >>>> System : OpenBSD 5.4 > >>>> Details : OpenBSD 5.4-current (GENERIC) #142: Sun Nov 10 22:52:49 > >>>> MST 2013 > >>>> > >>>> dera...@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC > >>>> Architecture: OpenBSD.i386 > >>>> Machine : i386 > >>>>> Description: > >>>> Soekris 5501 firewall panics an hour after booting new snapshot. > >>>> Appended is > >>>> some ddb info as well as normal sendbug details. > >>>>> How-To-Repeat: > >>>> Don't know. > >>>>> Fix: > >>>> Revert to Nov 7 kernel > >>> > >>> I've reverted the bpf commit for now, it looks like the change is > >>> invalidating > >>> assumptions of the conditional around bpf_read()'s tsleep in bpf.c:439 .. > >> > >> It appears this problem still exists. I've had panic's on 3 machines since > >> upgrading to the Nov 20 snap (2 amd64, 1 i386). I've attached the report > >> from > >> the x2 machine and am appending ddb's trace,ps,show registers and callout > >> from > >> all three. I have the full serial captures if more info is required. > > > > I've just updated things on my router at home and hit this (with > > ladvd), including with the bpf.c commits reverted. > > > > I'm using "ladvd -Lz" and hit the panic pretty much as soon as it starts. > > The panic remains with today's snapshot. This problem originated with v1.84 > of sys/net/bpf.c. Despite several reverts since, the problem remains. It is > easy to reproduce, ie.:
Not sure how we can point the finger at remnants of 1.84 since $ cd src/sys/net $ cvs diff -u -r1.83 bpf.c Index: bpf.c =================================================================== RCS file: /cvs/src/sys/net/bpf.c,v retrieving revision 1.83 retrieving revision 1.89 diff -u -p -u -r1.83 -r1.89 --- bpf.c 28 Dec 2012 17:52:06 -0000 1.83 +++ bpf.c 29 Nov 2013 19:28:55 -0000 1.89 @@ -1,4 +1,4 @@ -/* $OpenBSD: bpf.c,v 1.83 2012/12/28 17:52:06 gsoares Exp $ */ +/* $OpenBSD: bpf.c,v 1.89 2013/11/29 19:28:55 tedu Exp $ */ /* $NetBSD: bpf.c,v 1.33 1997/02/21 23:59:35 thorpej Exp $ */ /* @@ -172,8 +172,8 @@ bpf_movein(struct uio *uio, u_int linkty case DLT_ATM_RFC1483: /* - * en atm driver requires 4-byte atm pseudo header. - * though it isn't standard, vpi:vci needs to be + * An ATM driver requires 4-byte ATM pseudo header. + * Though it isn't standard, vpi:vci needs to be * specified anyway. */ sockp->sa_family = AF_UNSPEC; @@ -401,7 +401,7 @@ bpfread(dev_t dev, struct uio *uio, int D_GET(d); /* - * bd_rdStart is tagged when we start the read, iff there's a timeout. + * If there's a timeout, bd_rdStart is tagged when we start the read. * we can then figure out when we're done reading. */ i.e. only comment changes from 1.83 remain. What rev of bpf.c does work for you? .... Ken > > sudo pkg_add darkstat > sudo /etc/rc.d/darkstat start > echo quit | nc localhost 667 > > I've appended the panic, ddb info + dmesg from a qemu session. > $ pkg_info > darkstat-3.0.717p1 network statistics gatherer with graphs > quirks-1.104 exceptions to pkg_add rules > $ sudo /etc/rc.d/darkstat start > darkstat(ok) > $ echo quit | nc localhost 667 > panic: timeout_add: to_ticks (-1) < 0 > Stopped at Debugger+0x5: leave > RUN AT LEAST 'trace' AND 'ps' AND INCLUDE OUTPUT WHEN REPORTING THIS PANIC! > DO NOT EVEN BOTHER REPORTING THIS WITHOUT INCLUDING THAT INFORMATION! > ddb> trace > Debugger() at Debugger+0x5 > panic() at panic+0xee > timeout_add() at timeout_add+0xff > tsleep() at tsleep+0x88 > bpfread() at bpfread+0x1a4 > spec_read() at spec_read+0x2a8 > VOP_READ() at VOP_READ+0x32 > vn_read() at vn_read+0xa1 > dofilereadv() at dofilereadv+0x18a > sys_read() at sys_read+0x8f > syscall() at syscall+0x162 > --- syscall (number 3) --- > end of kernel > end trace frame: 0x7f7ffffbf5a8, count: -11 > 0x93482acf1ba: > ddb> ps > PID PPID PGRP UID S FLAGS WAIT COMMAND > 26262 16126 28453 1000 2 0x3 nc > 26586 6377 26586 587 3 0x90 netio darkstat > * 6377 1 6377 587 7 0x10 bpf darkstat > 16126 1 16126 1000 3 0x8b pause ksh > 32327 1 32327 0 3 0x83 ttyin getty > 12746 1 12746 0 3 0x83 ttyin getty > 4079 1 4079 0 3 0x83 ttyin getty > 5137 1 5137 0 3 0x83 ttyin getty > 27113 1 27113 0 3 0x83 ttyin getty > 28129 1 28129 0 3 0x80 select cron > 1050 1 1050 99 3 0x90 poll sndiod > 31085 1 31085 0 3 0xb0 select sendmail > 31327 1 31327 0 3 0x80 select sshd > 3210 0 0 0 3 0x100280 nfsidl nfsio > 26471 0 0 0 3 0x100280 nfsidl nfsio > 30689 0 0 0 3 0x100280 nfsidl nfsio > 5699 0 0 0 3 0x100280 nfsidl nfsio > 22462 28066 9855 83 3 0x90 poll ntpd > 28066 9855 9855 83 3 0x90 poll ntpd > 9855 1 9855 0 3 0x80 poll ntpd > 24367 1337 1337 74 3 0x90 bpf pflogd > 1337 1 1337 0 3 0x80 netio pflogd > 21976 18728 18728 73 3 0x90 poll syslogd > 18728 1 18728 0 3 0x80 netio syslogd > 24426 1 24426 77 3 0x90 poll dhclient > 3819 1 3819 0 3 0x80 poll dhclient > 12 0 0 0 3 0x100200 aiodoned aiodoned > 11 0 0 0 3 0x100200 syncer update > 10 0 0 0 3 0x100200 cleaner cleaner > 9 0 0 0 3 0x100200 reaper reaper > 8 0 0 0 3 0x100200 pgdaemon pagedaemon > 7 0 0 0 3 0x100200 bored crypto > 6 0 0 0 3 0x100200 pftm pfpurge > 5 0 0 0 3 0x40100200 acpi0 acpi0 > 4 0 0 0 3 0x100200 bored systq > 3 0 0 0 3 0x100200 bored syswq > 2 0 0 0 3 0x40100200 idle0 > 1 0 1 0 3 0x82 wait init > 0 -1 0 0 3 0x200 scheduler swapper > ddb> show registers > ds 0x292 > es 0x3a50 > fs 0x3a70 > gs 0xfdf1 acpi_pdirpa+0xb891 > rdi 0x1 > rsi 0x5 > rbp 0xffff800001d93a40 > rbx 0xffffffff81783490 addrmask+0x1250 > rdx 0xc > rcx 0x292 > rax 0x1 > r8 0xffff800001d93960 > r9 0 > r10 0x2d > r11 0xffffffff8108f680 comcnputc > r12 0x100 > r13 0xffff800001d93a50 > r14 0 > r15 0xffff800001d93db0 > rip 0xffffffff81342ab5 Debugger+0x5 > cs 0x8 > rflags 0x202 > rsp 0xffff800001d93a40 > ss 0x10 > Debugger+0x5: leave > ddb> callout > ticks now: 3638 > ticks wheel arg func > 1 0d/55 d 0x0 m_cltick > 6 0d/60 d 0xffffffff81cdb340 pffasttimo > 17 0d/71 d 0xffffffff81cdb300 pfslowtimo > 23 0d/77 d 0xfffffe80036544e0 endtsleep > 26 0d/80 d 0xfffffe8003654c18 endtsleep > 66 0d/120 d 0xffff800000166000 em_local_timer > 66 0d/120 d 0xffffffff81cdb440 if_slowtimo > 66 0d/120 d 0xffffffff81d2db00 pckbc_poll > 66 0d/120 d 0x0 nd6_timer > 66 0d/120 d 0xffffffff81cdb560 rt_timer_timer > 66 0d/120 d 0xffffffff81cdb000 schedcpu > 71 0d/125 d 0xfffffe8003723c08 endtsleep > 217 1d/271 d 0xfffffe800346fb00 realitexpire > 292 1d/271 d 0xfffffe8000abd028 endtsleep > 1568 1d/276 d 0xfffffe8000abd4f8 endtsleep > 3291 1d/283 d 0xfffffe800346f010 realitexpire > 27087 1d/376 d 0xffffffff81cdb5a0 arptimer > 56362 1d/490 d 0x0 arc4_reinit > 177682 2d/514 d 0xfffffe800331c480 realitexpire > 356362 2d/517 d 0x0 nd6_slowtimo > 719998 2d/523 d 0xfffffe800337e008 tcp_timer_keep > 719999 2d/523 d 0xfffffe800337e238 tcp_timer_keep > 8637276 2d/643 d 0xfffffe80036549b0 endtsleep > ddb> boot crash > > dumping to dev 0,1 offset 66455 > dump 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 18 17 16 15 14 > 13 12 11 10 9 8 7 6 5 4 3 2 1 0 succeeded > > > booting hd0a:bsd: 6537740+1652172+1079992+0+619808 [80+552096+367479]=0xe50088 > entry point at 0x10001e0 [7205c766, 34000004, 24448b12, 7958a304] > [ using 920424 bytes of bsd ELF symbol table ] > Copyright (c) 1982, 1986, 1989, 1991, 1993 > The Regents of the University of California. All rights reserved. > Copyright (c) 1995-2013 OpenBSD. All rights reserved. http://www.OpenBSD.org > > OpenBSD 5.4-current (GENERIC) #170: Tue Dec 17 09:21:47 MST 2013 > dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC > real mem = 50323456 (47MB) > avail mem = 41013248 (39MB) > mainbus0 at root > bios0 at mainbus0: SMBIOS rev. 2.4 @ 0xf1650 (10 entries) > bios0: vendor Bochs version "Bochs" date 01/01/2011 > bios0: Bochs Bochs > acpi0 at bios0: rev 0 > acpi0: sleep states S3 S4 S5 > acpi0: tables DSDT FACP SSDT APIC HPET > acpi0: wakeup devices > acpitimer0 at acpi0: 3579545 Hz, 24 bits > acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat > acpihpet0 at acpi0: 100000000 Hz > acpiprt0 at acpi0: bus 0 (PCI0) > acpicpu0 at acpi0 > mpbios0 at bios0: Intel MP Specification 1.4 > cpu0 at mainbus0: apid 0 (boot processor) > cpu0: QEMU Virtual CPU version 1.7.0, 3403.33 MHz > cpu0: > FPU,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,SSE3,CX16,POPCNT,NXE,LONG,LAHF,SVM,ABM,SSE4A > cpu0: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 512KB > 64b/line 16-way L2 cache > cpu0: ITLB 255 4KB entries direct-mapped, 255 4MB entries direct-mapped > cpu0: DTLB 255 4KB entries direct-mapped, 255 4MB entries direct-mapped > cpu0: apic clock running at 1000MHz > mpbios0: bus 0 is type PCI > mpbios0: bus 1 is type ISA > ioapic0 at mainbus0: apid 0 pa 0xfec00000, version 11, 24 pins > pci0 at mainbus0 bus 0 > pchb0 at pci0 dev 0 function 0 "Intel 82441FX" rev 0x02 > pcib0 at pci0 dev 1 function 0 "Intel 82371SB ISA" rev 0x00 > pciide0 at pci0 dev 1 function 1 "Intel 82371SB IDE" rev 0x00: DMA, channel 0 > wired to compatibility, channel 1 wired to compatibility > wd0 at pciide0 channel 0 drive 0: <QEMU HARDDISK> > wd0: 16-sector PIO, LBA48, 10240MB, 20971520 sectors > wd0(pciide0:0:0): using PIO mode 4, DMA mode 2 > atapiscsi0 at pciide0 channel 1 drive 0 > scsibus0 at atapiscsi0: 2 targets > cd0 at scsibus0 targ 0 lun 0: <QEMU, QEMU DVD-ROM, 1.7.> ATAPI 5/cdrom > removable > cd0(pciide0:1:0): using PIO mode 4, DMA mode 2 > piixpm0 at pci0 dev 1 function 3 "Intel 82371AB Power" rev 0x03: apic 0 int 9 > iic0 at piixpm0 > vga1 at pci0 dev 2 function 0 "Cirrus Logic CL-GD5446" rev 0x00 > wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation) > wsdisplay0: screen 1-5 added (80x25, vt100 emulation) > em0 at pci0 dev 3 function 0 "Intel 82540EM" rev 0x03: apic 0 int 11, address > 52:54:00:4e:62:8a > isa0 at pcib0 > isadma0 at isa0 > com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo > com0: console > pckbc0 at isa0 port 0x60/5 > pckbd0 at pckbc0 (kbd slot) > pckbc0: using irq 1 for kbd slot > wskbd0 at pckbd0: console keyboard, using wsdisplay0 > pms0 at pckbc0 (aux slot) > pckbc0: using irq 12 for aux slot > wsmouse0 at pms0 mux 0 > pcppi0 at isa0 port 0x61 > spkr0 at pcppi0 > lpt0 at isa0 port 0x378/4 irq 7 > fdc0 at isa0 port 0x3f0/6 irq 6 drq 2 > fd0 at fdc0 drive 1: density unknown > nvram: invalid checksum > mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges > vscsi0 at root > scsibus1 at vscsi0: 256 targets > softraid0 at root > scsibus2 at softraid0: 256 targets > root on wd0a (094007408badcf66.a) swap on wd0b dump on wd0b > clock: unknown CMOS layout > Fast boot: skipping disk checks. > setting tty flags > pf enabled > ddb.console: 0 -> 1 > ddb.max_line: 24 -> 0 > machdep.allowaperture: 0 -> 2 > starting network > DHCPREQUEST on em0 to 255.255.255.255 port 67 > DHCPACK from 10.1.2.18 (14:da:e9:b5:84:cf) > bound to 10.1.2.236 -- renewal in 302400 seconds. > starting early daemons: syslogd pflogd ntpd. > starting RPC daemons:. > savecore: no core dump > checking quotas: done. > clearing /tmp > starting pre-securelevel daemons:. > setting kernel security level: kern.securelevel: 0 -> 1 > creating runtime link editor directory cache. > preserving editor files. > starting network daemons: sshd sendmail sndiod. > starting local daemons: cron. > Tue Dec 17 19:01:23 EST 2013