Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 May 2007 20:13:30 +0100
From:      Tom Judge <tom@tomjudge.com>
To:        freebsd-net@freebsd.org
Subject:   FAST_IPSEC panic, (sleeping on non sleepable lock?)
Message-ID:  <4651EF5A.5050807@tomjudge.com>

next in thread | raw e-mail | index | archive | help
Hi,

I had a crash on a VPN router today running FAST_IPSEC.  The message on 
the console was something along the lines of panic sleeping on a non 
sleepable lock.  The system was a 6.2 RELEASE system running AMD64.

Here is a back trace.  Should I open a PR about this?

Tom

 > uname -a
FreeBSD narthex.mintel.co.uk 6.2-RELEASE FreeBSD 6.2-RELEASE #1: Fri May 
11 11:23:27 BST 2007 
root@roley.mintel.co.uk:/usr/obj/usr/src/sys/NARTHEX  amd64

Fatal trap 12: page fault while in kernel mode
cpuid = 1; apic id = 01
fault virtual address   = 0x32
fault code              = supervisor read, page not present
instruction pointer     = 0x8:0xffffffff803b95d5
stack pointer           = 0x10:0xffffffffb42333d0
frame pointer           = 0x10:0x32
code segment            = base 0x0, limit 0xfffff, type 0x1b
                         = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 72833 (ospfd)
trap number             = 12
panic: page fault
cpuid = 1
Uptime: 10d4h31m47s
Dumping 2047 MB (2 chunks)

bt
#0  doadump () at pcpu.h:172
#1  0x0000000000000004 in ?? ()
#2  0xffffffff802adcc7 in boot (howto=260) at 
/usr/src/sys/kern/kern_shutdown.c:409
#3  0xffffffff802ae361 in panic (fmt=0xffffff006501b980 "X\223\177b") at 
/usr/src/sys/kern/kern_shutdown.c:565
#4  0xffffffff8042bf2f in trap_fatal (frame=0xffffff006501b980, 
eva=18446742975850451800) at /usr/src/sys/amd64/amd64/trap.c:660
#5  0xffffffff8042c24f in trap_pfault (frame=0xffffffffb4233320, 
usermode=0) at /usr/src/sys/amd64/amd64/trap.c:573
#6  0xffffffff8042c503 in trap (frame=
       {tf_rdi = 0, tf_rsi = -1097955426304, tf_rdx = 0, tf_rcx = 7, 
tf_r8 = -310838263659101680, tf_r9 = 6, tf_rax = 11, tf_rbx = 7, tf_rbp 
= 50, tf_r10 = -2141088480, tf_r11 = 0, tf_r12 = 0, tf_r13 = 
-1097953206272, tf_r14 = -1097955424648, tf_r15 = -1097955426304, 
tf_trapno = 12, tf_addr = 50, tf_flags = -2143583294, tf_err = 0, tf_rip 
= -2143578667, tf_cs = 8, tf_rflags = 66050, tf_rsp = -1272761376, tf_ss 
= 16}) at /usr/src/sys/amd64/amd64/trap.c:352
#7  0xffffffff8041769b in calltrap () at 
/usr/src/sys/amd64/amd64/exception.S:168
#8  0xffffffff803b95d5 in swcr_process (arg=0x0, crp=0xffffff005ce3a000, 
hint=0) at /usr/src/sys/opencrypto/cryptosoft.c:910
#9  0xffffffff803b84c4 in crypto_invoke (cap=0xffffff0000918400, 
crp=0xffffff005ce3a000, hint=0) at /usr/src/sys/opencrypto/crypto.c:891
#10 0xffffffff803b8625 in crypto_dispatch (crp=0xffffff005ce3a000) at 
/usr/src/sys/opencrypto/crypto.c:726
#11 0xffffffff8037ec91 in esp_output (m=0x80, isr=0xffffff0060597a00, 
mp=0x0, skip=20, protoff=9) at /usr/src/sys/netipsec/xform_esp.c:871
#12 0xffffffff80370865 in ipsec4_process_packet (m=0xffffff0061e1f500, 
isr=0xffffff0061e1f5ac, flags=0, tunalready=0)
     at /usr/src/sys/netipsec/ipsec_output.c:485
#13 0xffffffff8035be0f in ip_output (m=0xffffff0061e1f500, opt=0x0, 
ro=0xffffff0058fecc60, flags=0, imo=0x0, inp=0x0)
     at /usr/src/sys/netinet/ip_output.c:625
#14 0xffffffff80351c9f in in_gif_output (ifp=0xffffff00627db800, 
family=1556201472, m=0xffffff0061e1f500) at 
/usr/src/sys/netinet/in_gif.c:231
#15 0xffffffff80337840 in gif_output (ifp=0xffffff00627db800, 
m=0xffffff0061e1f500, dst=0xffffffffb42338f8, rt=0x7) at 
/usr/src/sys/net/if_gif.c:463
#16 0xffffffff8035c1fe in ip_output (m=0xffffff0061e1f500, opt=0x4000, 
ro=0xffffffffb42338f0, flags=35, imo=0xffffff0052da3900, 
inp=0xffffff005e2a64c0)
     at /usr/src/sys/netinet/ip_output.c:777
#17 0xffffffff8035cab1 in rip_output (m=0xffffff0061e1f500, 
so=0xffffff005cc1c000, dst=4) at /usr/src/sys/netinet/raw_ip.c:335
#18 0xffffffff8035dcfb in rip_send (so=0xffffff005c76fc08, 
flags=1556201472, m=0xffffff0061e1f500, nam=0xffffff0066f13040, 
control=0xfbafae3f00000210,
     td=0x6) at /usr/src/sys/netinet/raw_ip.c:800
#19 0xffffffff802f41de in sosend (so=0xffffff005c76fc08, 
addr=0xffffff0066f13040, uio=0xffffffffb4233a70, top=0xffffff0061e1f500, 
control=0x0, flags=0,
     td=0xffffff006501b980) at /usr/src/sys/kern/uipc_socket.c:836
#20 0xffffffff802fbc69 in kern_sendit (td=0xffffff006501b980, s=5, 
mp=0xffffffffb4233b30, flags=0, control=0x0, segflg=64)
     at /usr/src/sys/kern/uipc_syscalls.c:772
#21 0xffffffff802fd077 in sendit (td=0xffffff006501b980, s=5, 
mp=0xffffffffb4233b30, flags=0) at /usr/src/sys/kern/uipc_syscalls.c:712
#22 0xffffffff802fd276 in sendmsg (td=0xffffff006501b980, 
uap=0xffffffffb4233bc0) at /usr/src/sys/kern/uipc_syscalls.c:920
#23 0xffffffff8042cd81 in syscall (frame=
       {tf_rdi = 5, tf_rsi = 140737488348496, tf_rdx = 0, tf_rcx = 44, 
tf_r8 = 0, tf_r9 = 140737488348120, tf_rax = 28, tf_rbx = 
140737488348736, tf_rbp = 5907296, tf_r10 = 0, tf_r11 = 6011904, tf_r12 
= 1, tf_r13 = 5826048, tf_r14 = 5705728, tf_r15 = 140737488348544, 
tf_trapno = 22, tf_addr = 0, tf_flags = 338055, tf_err = 2, tf_rip = 
34372048476, tf_cs = 43, tf_rflags = 518, tf_rsp = 140737488348296, 
tf_ss = 35}) at /usr/src/sys/amd64/amd64/trap.c:792
#24 0xffffffff80417838 in Xfast_syscall () at 
/usr/src/sys/amd64/amd64/exception.S:270
#25 0x0000000800bbd65c in ?? ()
Previous frame inner to this frame (corrupt stack?)

(kgdb) frame 8
#8  0xffffffff803b95d5 in swcr_process (arg=0x0, crp=0xffffff005ce3a000, 
hint=0) at /usr/src/sys/opencrypto/cryptosoft.c:910
910                     for (sw = swcr_sessions[lid];

(kgdb) list
905                      * XXX (or rather, we can but it won't give us 
the right
906                      * XXX results). To do that, we'd need some way 
of differentiating
907                      * XXX between the various instances of an 
algorithm (so we can
908                      * XXX locate the correct crypto context).
909                      */
910                     for (sw = swcr_sessions[lid];
911                         sw && sw->sw_alg != crd->crd_alg;
912                         sw = sw->sw_next)
913                             ;
914




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