kernel/4963: OpenBSD 3.8 sparc64 panic: mem address not aligned

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

kernel/4963: OpenBSD 3.8 sparc64 panic: mem address not aligned

Bryan S. Leaman
>Number:         4963
>Category:       kernel
>Synopsis:       panic occurs on bridge_filter when using tun in a bridge
>Confidential:   yes
>Severity:       critical
>Priority:       high
>Responsible:    bugs
>State:          open
>Quarter:        
>Keywords:      
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Jan 02 21:30:01 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Bryan S. Leaman
>Release:        3.8
>Organization:
net
>Environment:
       
        System      : OpenBSD 3.8
        Architecture: OpenBSD.sparc64
        Machine     : sparc64
>Description:
        I've created a bridge0 containing an ethernet adapter hme0 and tun0,
        for use as an OpenVPN server.  After starting OpenVPN and connecting
        with a VPN client, the server machine will panic within the next
        hour or so, sometimes in minutes. I've disabled pf to keep things
        simple, and the problem still occurs. Panic and debugging information
        is listed below.

        Kernel is GENERIC with RAIDframe enabled, no other modifications.

# trap type 0x34: pc=11ab294 npc=11ab298 pstate=820006<PRIV,IE>                
panic: mem address not aligned                                                  
kdb breakpoint at 1360860                                                      
Stopped at      Debugger+0x4:   nop                                            
RUN AT LEAST 'trace' AND 'ps' AND INCLUDE OUTPUT WHEN REPORTING THIS PANIC!    
DO NOT EVEN BOTHER REPORTING THIS WITHOUT INCLUDING THAT INFORMATION!          

ddb> x /i 0x11ab294                                                            
bridge_filter+0x454:    ld              [%l0 + %g0], %g3                        

ddb> trace                                                                      
trap(e00179c8, 34, 11ab294, 820006, 0, 0) at trap+0xe0                          
slowtrap(cf3fc10, e, 0, d30d8030, 0, 0) at slowtrap+0x17c                      
bridge_filter(2e30000, 1, 2deac00, e0017c78, 0, 0) at bridge_filter+0xf0        
bridgeintr_frame(2e30000, cf3fc10, cd8a680, 0, 0, 0) at bridgeintr_frame+0x274  
bridgeintr(1811628, 1811628, 11, cfba230, 0, 8b944) at bridgeintr+0x68          
softnet(20000000, 0, e0017ec8, 4, 1351d40, 1894860) at softnet+0xa0            
sparc_interrupt(ffffffffffffffff, 1, 18268b8, 2, 0, 0) at sparc_interrupt+0x20c
                                                                               
bridge_input(0, cf3fc48, cf3fc10, 2726e000, 6869, 180fb50) at bridge_input+0x23
4                                                                              
ether_input(cf3fc10, cf3fc48, 8000000, cd8a680, 0, 0) at ether_input+0x69c      
tunwrite(0, 27271c00, 11, 288de4, 0, 0) at tunwrite+0x324                      
spec_write(27271a30, 40, cee28e0, cd8a680, 0, 0) at spec_write+0xc8            
ufsspec_write(27271a30, 30042, cd8a680, 0, 0, 0) at ufsspec_write+0x40          
VOP_WRITE(cee2810, 27271c00, 11, cfba230, 0, 0) at VOP_WRITE+0x38              
vn_write(7, cf85d48, 27271c00, cfba230, 0, 0) at vn_write+0xac                  
dofilewrite(16, 8, cf85d10, 4f54e054, 4a, 4a) at dofilewrite+0x6c              
sys_write(9, 27271dd0, 27271dc0, 0, 0, 180fb50) at sys_write+0x58              
syscall(27271ed0, 4, 43ed9888, 43ed988c, 0, 0) at syscall+0x280                
softtrap(8, 4f54e054, 4a, 288de4, 0, 0) at softtrap+0x184                      

ddb> mach tf 0xe00179c8                                                        
Trapframe 0xe00179c8:   tstate: 82000605        pc: 11ab294     npc: 11ab298    
y: 23   pil: 1  oldpil: 1       fault: 0        kstack: 0       tt: 34          
Globals:                                                                        
0000000000000000 00000000f0000000 0000000040000000 0000000000000000            
000000000cf3fc10 0000000000000000 0000000000000000 0000000047702400            
outs:                                                                          
000000000cf3fc10 000000000000000e 0000000000000000 00000000d30d8030            
0000000000000000 0000000000000000 00000000e00172f9 00000000011aaf30            
locals:                                                                        
000000000cf3fc56 00000000000086dd 0000000002e30000 0000000000000001            
000000000cee2810 0000000000000000 0000000000000000 0000000000000000            
ins:                                                                            
0000000002e30000 0000000000000001 0000000002deac00 00000000e0017c78            
0000000000000000 0000000000000000 00000000e00173c9 00000000011a9114            

ddb> ps                                                                        
   PID   PPID   PGRP    UID  S       FLAGS  WAIT       COMMAND                  
 12465   2849   2849      0  2         0x6             sh                      
 29248   2849   2849      0  2     0x44106             netstat                  
  8110  20134   8110      0  3      0x4086  poll       top                      
* 4537      1   4537  32767  7       0x104             openvpn                  
 20134  23261  20134      0  3      0x4086  pause      ksh                      
 23261   7450  23261   1000  3      0x4086  pause      tcsh                    
  7450  28749  28749   1000  3       0x184  select     sshd                    
 28749  18436  28749      0  3      0x4084  netio      sshd                    
  2849   2107   2849      0  3      0x4086  pause      sh                      
  2107  10814   2107      0  3      0x4086  pause      ksh                      
 10814  26032  10814   1000  3      0x4086  pause      tcsh                    
 26032  27074  27074   1000  3       0x184  select     sshd                    
 27074  18436  27074      0  3      0x4084  netio      sshd                    
   582      1    582      0  3      0x4086  ttyin      ksh                      
 24031      1  24031      0  3        0x84  select     cron                    
 17505      1  17505      0  3        0x84  pause      ntpd                    
 16738      1  16738      0  3     0x40184  select     sendmail                
 18436      1  18436      0  3        0x84  select     sshd                    
   819      1    819      0  3       0x184  select     inetd                    
  2209  12163  12163     83  3       0x184  poll       ntpd                    
 12163      1  12163      0  3        0x84  poll       ntpd                    
  3348   3911   3911     73  2       0x184             syslogd                  
  3911      1   3911      0  3        0x84  netio      syslogd                  
     9      0      0      0  3    0x100204  crypto_wa  crypto                  
     8      0      0      0  3    0x100204  aiodoned   aiodoned                
     7      0      0      0  3    0x100204  syncer     update                  
     6      0      0      0  3    0x100204  cleaner    cleaner                  
     5      0      0      0  3    0x100204  reaper     reaper                  
     4      0      0      0  3    0x100204  pgdaemon   pagedaemon              
    10      0      0      0  3    0x100204  rfwcond    raid0                    
     3      0      0      0  3    0x100204  pftm       pfpurge                  
     2      0      0      0  3    0x100204  kmalloc    kmthread                
     1      0      1      0  3      0x4084  wait       init                    
     0     -1      0      0  3     0x80204  scheduler  swapper                  
ddb>                                                                      

        Taking OpenVPN out of the picture, I noticed that if I boot the
        system and create bridge0 with a NIC and tun0 (with tun0
        options "link0 up"), the bridge accumulates output errors until I
        start the OpenVPN daemon, at which point the errors stop incrementing.
        Not sure if this is related to the panic.  From netstat -i, note the
        increasing number of output errors:

Mon Jan  2 14:42:49 EST 2006                                                  
bridge0 1500  <Link>                            3777     0     7742  3677     0
Mon Jan  2 14:42:54 EST 2006                                                  
bridge0 1500  <Link>                            3782     0     7752  3682     0
Mon Jan  2 14:42:59 EST 2006                                                  
bridge0 1500  <Link>                            3787     0     7761  3687     0
Mon Jan  2 14:43:05 EST 2006                                                  
bridge0 1500  <Link>                            3793     0     7770  3692     0
Mon Jan  2 14:43:10 EST 2006                                                  
bridge0 1500  <Link>                            3798     0     7802  3697     0
Mon Jan  2 14:43:15 EST 2006                                                  
bridge0 1500  <Link>                            3814     0     7832  3713     0

        I've tried this on an Ultra 1 and an Ultra 5, with the same panic
        and the same issue with the bridge errors. I also tried using non-Sun
        NIC cards in the Ultra 5.  I created the bridge using xl0 and tun0,
        with the same results as using hme0 and tun0.

        I also tried with the OpenVPN 2.0.2 package from openbsd.org, with
        the same results.

Here are some more details of the configuration:

fxp0 is my VPN client LAN (OpenVPN daemon listens on this interface)
xl0 is my internal LAN (part of bridge)
tun0 is the OpenVPN client virtual interface (part of bridge)

# ifconfig -a
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
        groups: lo
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x7
hme0: flags=8822<BROADCAST,NOTRAILERS,SIMPLEX,MULTICAST> mtu 1500
        lladdr 00:03:ba:09:2c:3c
        media: Ethernet autoselect
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        lladdr 00:a0:c9:73:05:ff
        media: Ethernet 100baseTX full-duplex
        status: active
        inet 192.168.8.1 netmask 0xffffff00 broadcast 192.168.8.255
        inet6 fe80::2a0:c9ff:fe73:5ff%fxp0 prefixlen 64 scopeid 0x2
xl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        lladdr 00:10:5a:99:6f:8b
        groups: egress
        media: Ethernet 100baseTX full-duplex
        status: active
        inet 67.110.191.165 netmask 0xffffffe0 broadcast 67.110.191.191
        inet6 fe80::210:5aff:fe99:6f8b%xl0 prefixlen 64 scopeid 0x3
pflog0: flags=0<> mtu 33192
pfsync0: flags=0<> mtu 1348
enc0: flags=0<> mtu 1536
tun0: flags=9943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,LINK0,MULTICAST> mtu 1500
        lladdr 00:bd:eb:41:b9:01
        inet6 fe80::2bd:ebff:fe41:b901%tun0 prefixlen 64 scopeid 0x9
bridge0: flags=41<UP,RUNNING> mtu 1500
        groups: bridge

# brconfig -a                                                  
bridge0: flags=41<UP,RUNNING>                                  
        Configuration:                                          
                priority 32768 hellotime 2 fwddelay 15 maxage 20
        Interfaces:                                            
                tun0 flags=7<LEARNING,DISCOVER,BLOCKNONIP>      
                        port 9 ifpriority 128 ifcost 55        
                xl0 flags=7<LEARNING,DISCOVER,BLOCKNONIP>      
                        port 3 ifpriority 128 ifcost 55        
        Addresses (max cache: 100, timeout: 240):              
                08:00:20:79:81:30 xl0 1 flags=0<>              
                00:d0:b7:4a:36:ae xl0 0 flags=0<>              
                00:c0:4f:6b:cb:57 xl0 0 flags=0<>              
                00:07:50:ef:3f:a7 xl0 1 flags=0<>              
                00:01:96:61:d4:d7 xl0 1 flags=0<>              
                00:06:29:cf:15:cc xl0 1 flags=0<>              
                00:b0:d0:54:2c:86 xl0 1 flags=0<>              
                00:11:11:38:d5:b2 xl0 0 flags=0<>              
                08:00:20:93:0e:c1 xl0 1 flags=0<>              

# cat /etc/hostname.xl0                                                      
inet 67.110.191.165 255.255.255.224 NONE media 100baseTX mediaopt full-duplex

# cat /etc/hostname.tun0                                                    
link0 up                                                                    

# cat /etc/hostname.fxp0                                                    
inet 192.168.8.1 255.255.255.0 NONE media 100baseTX mediaopt full-duplex    

# cat /etc/bridgename.bridge0
add xl0                      
add tun0                    
blocknonip xl0              
blocknonip tun0              
up                          

dmesg output:

console is /pci@1f,0/pci@1,1/ebus@1/se@14,400000:a                              
Copyright (c) 1982, 1986, 1989, 1991, 1993                                      
        The Regents of the University of California.  All rights reserved.      
Copyright (c) 1995-2005 OpenBSD. All rights reserved.  http://www.OpenBSD.org   
                                                                               
OpenBSD 3.8 (GENERIC.RAID) #0: Mon Nov  8 18:48:50 EST 2004                    
    [hidden email]:/usr/src/sys/arch/sparc64/compile/GENERIC.RAID  
total memory = 1073741824                                                      
avail memory = 970080256                                                        
using 6553 buffers containing 53682176 bytes of memory                          
bootpath: /pci@1f,0/pci@1,0/scsi@3,1/disk@2,0                                  
mainbus0 (root): Sun Ultra 5/10 UPA/PCI (UltraSPARC-IIi 440MHz)                
cpu0 at mainbus0: SUNW,UltraSPARC-IIi @ 440 MHz, version 0 FPU                  
cpu0: physical 32K instruction (32 b/l), 16K data (32 b/l), 2048K external (64 b
/l)                                                                            
psycho0 at mainbus0 addr 0xfffc4000                                            
SUNW,sabre: impl 0, version 0: ign 7c0 bus range 0 to 2; PCI bus 0              
DVMA map: c0000000 to e0000000                                                  
IOTDB: 52f8000 to 5378000                                                      
pci0 at psycho0                                                                
ppb0 at pci0 dev 1 function 1 "Sun Simba PCI-PCI" rev 0x13                      
pci1 at ppb0 bus 1                                                              
ebus0 at pci1 dev 1 function 0 "Sun PCIO Ebus2" rev 0x01                        
auxio0 at ebus0 addr 726000-726003, 728000-728003, 72a000-72a003, 72c000-72c003,
 72f000-72f003                                                                  
power at ebus0 addr 724000-724003 ipl 37 not configured                        
SUNW,pll at ebus0 addr 504000-504002 not configured                            
sab0 at ebus0 addr 400000-40007f ipl 43: rev 3.2                                
sabtty0 at sab0 port 0: console i/o                                            
sabtty1 at sab0 port 1                                                          
comkbd0 at ebus0 addr 3083f8-3083ff ipl 41: no keyboard                        
com0 at ebus0 addr 3062f8-3062ff ipl 42: mouse: ns16550a, 16 byte fifo          
lpt0 at ebus0 addr 3043bc-3043cb, 30015c-30015d, 700000-70000f ipl 34: polled  
fdthree at ebus0 addr 3023f0-3023f7, 706000-70600f, 720000-720003 ipl 39 not con
figured                                                                        
clock1 at ebus0 addr 0-1fff: mk48t59: hostid 83092c3c                          
flashprom at ebus0 addr 0-fffff not configured                                  
audioce0 at ebus0 addr 200000-2000ff, 702000-70200f, 704000-70400f, 722000-72200
3 ipl 35 ipl 36: nvaddrs 0                                                      
audio0 at audioce0                                                              
hme0 at pci1 dev 1 function 1 "Sun HME" rev 0x01: address 00:03:ba:09:2c:3c    
nsphy0 at hme0 phy 1: DP83840 10/100 PHY, rev. 1                                
hme0: using ivec 3021 for interrupt                                            
vgafb0 at pci1 dev 2 function 0 "ATI Mach64 GP" rev 0x5c                        
wsdisplay0 at vgafb0                                                            
wsdisplay0: screen 0 added (std, sun emulation)                                
pciide0 at pci1 dev 3 function 0 "CMD Technology PCI0646" rev 0x03: DMA, channel
 0 configured to native-PCI, channel 1 configured to native-PCI                
pciide0: using ivec 1820 for native-PCI interrupt                              
wd0 at pciide0 channel 0 drive 0: <ST320414A>                                  
wd0: 16-sector PIO, LBA, 19458MB, 39851760 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: <LG, CD-ROM CRD-8483B, 1.02> SCSI0 5/cdrom removab
le                                                                              
cd0(pciide0:1:0): using PIO mode 4, DMA mode 2                                  
ppb1 at pci0 dev 1 function 0 "Sun Simba PCI-PCI" rev 0x13                      
pci2 at ppb1 bus 2                                                              
fxp0 at pci2 dev 1 function 0 "Intel 82557" rev 0x02: ivec 10, address 00:a0:c9:
73:05:ff                                                                        
inphy0 at fxp0 phy 1: i82555 10/100 PHY, rev. 0                                
xl0 at pci2 dev 2 function 0 "3Com 3c905B 100Base-TX" rev 0x30: ivec 14, address
 00:10:5a:99:6f:8b                                                              
exphy0 at xl0 phy 24: 3Com internal media interface                            
siop0 at pci2 dev 3 function 0 "Symbios Logic 53c875" rev 0x14: ivec 1818, using
 4K of on-board RAM                                                            
scsibus1 at siop0: 16 targets                                                  
siop1 at pci2 dev 3 function 1 "Symbios Logic 53c875" rev 0x14: ivec 1819, using
 4K of on-board RAM                                                            
scsibus2 at siop1: 16 targets                                                  
sd0 at scsibus2 targ 2 lun 0: <SEAGATE, ST39173W SUN9.0G, 7063> SCSI2 0/direct f
ixed                                                                            
sd0: 8637MB, 4926 cyl, 27 head, 133 sec, 512 bytes/sec, 17689267 sec total      
sd1 at scsibus2 targ 3 lun 0: <SEAGATE, ST39173W SUN9.0G, 7063> SCSI2 0/direct f
ixed                                                                            
sd1: 8637MB, 4926 cyl, 27 head, 133 sec, 512 bytes/sec, 17689267 sec total      
pcons at mainbus0 not configured                                                
No counter-timer -- using %tick at 440MHz as system clock.                      
Kernelized RAIDframe activated                                                  
siop1: target 2 now using tagged 16 bit 20.0 MHz 15 REQ/ACK offset xfers        
siop1: target 3 now using tagged 16 bit 20.0 MHz 15 REQ/ACK offset xfers        
raid0 (root): (RAID Level 1) total number of sectors is 16690816 (8149 MB) as ro
ot                                                                              
root on raid0a                                                                  
rootdev=0x1900 rrootdev=0x7900 rawdev=0x7902                                    

>How-To-Repeat:
        Can reproduce the problem by starting OpenVPN, connecting a client
        system over the VPN tunnel, and running some pings against the server's
        LAN-side interface of the bridge (xl0).  Ping times are unusually high,
        often 500-1000ms, and after some time the server will panic.

        Pinging "beyond" that NIC, and to my internal network, shows normal
        ping times of <10ms, so the high ping times to the server itself are
        unusual and may be related to the kernel panic.
>Fix:
        no fix


>Release-Note:
>Audit-Trail:
>Unformatted: