long network segment call stack can fail

Adrian Chadd adrian.chadd at gmail.com
Wed Jan 6 20:50:53 UTC 2016


hah, that's very pretty. The downside of a completely direct-dispatch
network stack. :)


-a


On 6 January 2016 at 10:00, Chagin Dmitry <dchagin at freebsd.org> wrote:
> Hi, all.
>
> Here's a panic that occurs during the massive network loads,
> as far as I can see network segment has eaten the whole stack, so
> only 0xeb0 bytes left for interrupt hanlder.
>
>
> #0  doadump (textdump=0x8151cd90) at /home/git/head/sys/kern/kern_shutdown.c:296
> #1  0xffffffff803d4715 in db_fncall_generic (addr=0xffffffff80763f00, rv=0xffffffff8151cd60 <dblfault_stack+1520>,
>     nargs=0x0, args=0xffffffff8151cd70 <dblfault_stack+1536>) at /home/git/head/sys/ddb/db_command.c:568
> #2  0xffffffff803d3e94 in db_fncall (dummy1=0xffffffff8151cea0, dummy2=0x0, dummy3=0x0,
>     dummy4=0xffffffff8151cea0 <dblfault_stack+1840> "\n") at /home/git/head/sys/ddb/db_command.c:616
> #3  0xffffffff803d371e in db_command (last_cmdp=0xffffffff812e3838 <db_last_command>, cmd_table=0x0, dopager=0x1)
>     at /home/git/head/sys/ddb/db_command.c:440
> #4  0xffffffff803d32be in db_command_loop () at /home/git/head/sys/ddb/db_command.c:493
> #5  0xffffffff803d7b53 in db_trap (type=0x3, code=0x0) at /home/git/head/sys/ddb/db_main.c:251
> #6  0xffffffff807c568f in kdb_trap (type=0x3, code=0x0, tf=0xffffffff8151d430 <dblfault_stack+3264>)
>     at /home/git/head/sys/kern/subr_kdb.c:654
> #7  0xffffffff80c7a9f1 in trap (frame=0xffffffff8151d430 <dblfault_stack+3264>)
>     at /home/git/head/sys/amd64/amd64/trap.c:549
> #8  0xffffffff80c7bb5a in trap_check (frame=0xffffffff8151d430 <dblfault_stack+3264>)
>     at /home/git/head/sys/amd64/amd64/trap.c:628
> #9  0xffffffff80c53f47 in calltrap () at /home/git/head/sys/amd64/amd64/exception.S:234
> #10 0xffffffff807c4ee5 in breakpoint () at ./machine/cpufunc.h:63
> #11 0xffffffff807c4ae7 in kdb_enter (why=0xffffffff80db94e3 "panic", msg=0xffffffff80db94e3 "panic")
>     at /home/git/head/sys/kern/subr_kdb.c:443
> #12 0xffffffff8076461b in vpanic (fmt=0xffffffff80e1067f "double fault", ap=0xffffffff8151d630 <dblfault_stack+3776>)
>     at /home/git/head/sys/kern/kern_shutdown.c:750
> #13 0xffffffff807646c0 in panic (fmt=0xffffffff80e1067f "double fault") at /home/git/head/sys/kern/kern_shutdown.c:688
> #14 0xffffffff80c7bc6a in dblfault_handler (frame=0xffffffff8151d6b0 <dblfault_stack+3904>)
>     at /home/git/head/sys/amd64/amd64/trap.c:861
> #15 0xffffffff80c5403c in Xdblfault () at /home/git/head/sys/amd64/amd64/exception.S:290
> #16 0xffffffff807a26c5 in cpu_search (cg=0xffffffff8146b148 <group+280>, low=0xfffffe02d858b298, high=0x0, match=0x1)
>     at /home/git/head/sys/kern/sched_ule.c:689
> #17 cpu_search_lowest (cg=0xffffffff8146b148 <group+280>, low=0xfffffe02d858b298)
>     at /home/git/head/sys/kern/sched_ule.c:781
> #18 0xffffffff807a286b in cpu_search (cg=0xffffffff8146b068 <group+56>, low=0xfffffe02d858b418, high=0x0, match=0x1)
>     at /home/git/head/sys/kern/sched_ule.c:708
> #19 cpu_search_lowest (cg=0xffffffff8146b068 <group+56>, low=0xfffffe02d858b418)
>     at /home/git/head/sys/kern/sched_ule.c:781
> #20 0xffffffff807a286b in cpu_search (cg=0xffffffff8146b030 <group>, low=0xfffffe02d858b490, high=0x0, match=0x1)
>     at /home/git/head/sys/kern/sched_ule.c:708
> #21 cpu_search_lowest (cg=0xffffffff8146b030 <group>, low=0xfffffe02d858b490)
>     at /home/git/head/sys/kern/sched_ule.c:781
> #22 0xffffffff807a9496 in sched_lowest (cg=0xffffffff8146b030 <group>, mask=..., pri=0x78, maxload=0x7fffffff,
>     prefer=0x0) at /home/git/head/sys/kern/sched_ule.c:813
> #23 0xffffffff807a511b in sched_pickcpu (td=0xfffff8000bb3a4f0, flags=0x0) at /home/git/head/sys/kern/sched_ule.c:1290
> #24 0xffffffff807a61c8 in sched_add (td=0xfffff8000bb3a4f0, flags=0x0) at /home/git/head/sys/kern/sched_ule.c:2426
> #25 0xffffffff807a5e78 in sched_wakeup (td=0xfffff8000bb3a4f0) at /home/git/head/sys/kern/sched_ule.c:2058
> #26 0xffffffff80777eb4 in setrunnable (td=0xfffff8000bb3a4f0) at /home/git/head/sys/kern/kern_synch.c:522
> #27 0xffffffff807dcf99 in sleepq_resume_thread (sq=0xfffff800036fb680, td=0xfffff8000bb3a4f0, pri=0x0)
>     at /home/git/head/sys/kern/subr_sleepqueue.c:776
> #28 0xffffffff807db303 in sleepq_timeout (arg=0xfffff8000bb3a4f0) at /home/git/head/sys/kern/subr_sleepqueue.c:915
> #29 0xffffffff8078bfac in softclock_call_cc (c=0xfffff8000bb3a8a8, cc=0xffffffff81589180 <cc_cpu>, direct=0x1)
>     at /home/git/head/sys/kern/kern_timeout.c:723
> #30 0xffffffff8078b78a in callout_process (now=0x393bab69d8fb) at /home/git/head/sys/kern/kern_timeout.c:493
> #31 0xffffffff80cc8932 in handleevents (now=0x393bab69d8fb, fake=0x0) at /home/git/head/sys/kern/kern_clocksource.c:212
> #32 0xffffffff80cc941c in timercb (et=0xffffffff81562d98 <lapic_et>, arg=0x0)
>     at /home/git/head/sys/kern/kern_clocksource.c:345
> #33 0xffffffff80d1e9e8 in lapic_handle_timer (frame=0xfffffe02d858bdf0) at /home/git/head/sys/x86/x86/local_apic.c:1056
> #34 0xffffffff80c54b3c in Xtimerint () at /home/git/head/sys/amd64/amd64/apic_vector.S:133
> #35 0xffffffff80c0cc36 in uma_dbg_getslab (zone=0xfffff80003e15000, item=0xfffff801f0e4b800)
>     at /home/git/head/sys/vm/uma_dbg.c:219
> #36 0xffffffff80c0ca34 in uma_dbg_alloc (zone=0xfffff80003e15000, slab=0x0, item=0xfffff801f0e4b800)
>     at /home/git/head/sys/vm/uma_dbg.c:242
> #37 0xffffffff80c04e58 in uma_zalloc_arg (zone=0xfffff80003e15000, udata=0xfffffe02d858c070, flags=0x1)
>     at /home/git/head/sys/vm/uma_core.c:2220
> #38 0xffffffff8095ea38 in m_gethdr (how=0x1, type=0x1) at /home/git/head/sys/sys/mbuf.h:672
> #39 0xffffffff8095e8b6 in ieee80211_mbuf_adjust (vap=0xfffff8000f2b1000, hdrsize=0x1a, key=0xfffffe0001817138,
>     m=0xfffff8000f744400) at /home/git/head/sys/net80211/ieee80211_output.c:1113
> #40 0xffffffff8095add2 in ieee80211_encap (vap=0xfffff8000f2b1000, ni=0xfffffe0001817000, m=0xfffff8000f744400)
>     at /home/git/head/sys/net80211/ieee80211_output.c:1354
> #41 0xffffffff8095a234 in ieee80211_vap_pkt_send_dest (vap=0xfffff8000f2b1000, m=0xfffff8000f744400,
>     ni=0xfffffe0001817000) at /home/git/head/sys/net80211/ieee80211_output.c:258
> #42 0xffffffff8095c91e in ieee80211_start_pkt (vap=0xfffff8000f2b1000, m=0xfffff8000f744400)
>     at /home/git/head/sys/net80211/ieee80211_output.c:426
> #43 0xffffffff8095c27b in ieee80211_vap_transmit (ifp=0xfffff8000f2b7000, m=0xfffff8000f744400)
>     at /home/git/head/sys/net80211/ieee80211_output.c:486
> #44 0xffffffff808db57b in bridge_enqueue (sc=0xfffff8000f2c5c00, dst_ifp=0xfffff8000f2b7000, m=0xfffff8000f744400)
>     at /home/git/head/sys/net/if_bridge.c:1919
> #45 0xffffffff808e02be in bridge_output (ifp=0xfffff8000f2b7000, m=0xfffff8000f744400, sa=0x0, rt=0x0)
>     at /home/git/head/sys/net/if_bridge.c:2085
> #46 0xffffffff808e4b52 in ether_output (ifp=0xfffff8000f2b7000, m=0xfffff8000f744400, dst=0xfffff8000befe6b0,
>     ro=0xfffffe02d858d248) at /home/git/head/sys/net/if_ethersubr.c:376
> #47 0xffffffff8095cab7 in ieee80211_output (ifp=0xfffff8000f2b7000, m=0xfffff8000f744400, dst=0xfffff8000befe6b0,
>     ro=0xfffffe02d858d248) at /home/git/head/sys/net80211/ieee80211_output.c:576
> #48 0xffffffff809fd851 in ip_output (m=0xfffff8000f744400, opt=0x0, ro=0xfffffe02d858d248, flags=0x0, imo=0x0,
>     inp=0xfffff801f786c7d0) at /home/git/head/sys/netinet/ip_output.c:638
> #49 0xffffffff80ade593 in tcp_output (tp=0xfffff8016b2bc418) at /home/git/head/sys/netinet/tcp_output.c:1414
> #50 0xffffffff80ad59ee in tcp_do_segment (m=0xfffff8000f71d100, th=0xfffff800071f804a, so=0xfffff8016b5c92e8,
>     tp=0xfffff8016b2bc418, drop_hdrlen=0x34, tlen=0x544, iptos=0x0, ti_locked=0x1)
>     at /home/git/head/sys/netinet/tcp_input.c:1904
> #51 0xffffffff80ad3c9f in tcp_input (mp=0xfffffe02d858de28, offp=0xfffffe02d858de00, proto=0x6)
>     at /home/git/head/sys/netinet/tcp_input.c:1417
> #52 0xffffffff809f8b91 in ip_input (m=0x0) at /home/git/head/sys/netinet/ip_input.c:786
> #53 0xffffffff808f6b4e in netisr_dispatch_src (proto=0x1, source=0x0, m=0xfffff8000f71d100)
>     at /home/git/head/sys/net/netisr.c:972
> #54 0xffffffff808f7157 in netisr_dispatch (proto=0x1, m=0xfffff8000f71d100) at /home/git/head/sys/net/netisr.c:1063
> #55 0xffffffff808e55b0 in ether_demux (ifp=0xfffff8000f2b7000, m=0xfffff8000f71d100)
>     at /home/git/head/sys/net/if_ethersubr.c:805
> #56 0xffffffff808e7231 in ether_input_internal (ifp=0xfffff8000f2b7000, m=0xfffff8000f71d100)
>     at /home/git/head/sys/net/if_ethersubr.c:611
> #57 0xffffffff808e6a3f in ether_nh_input (m=0xfffff8000f71d100) at /home/git/head/sys/net/if_ethersubr.c:641
> #58 0xffffffff808f6b4e in netisr_dispatch_src (proto=0x5, source=0x0, m=0xfffff8000f71d100)
>     at /home/git/head/sys/net/netisr.c:972
> #59 0xffffffff808f7157 in netisr_dispatch (proto=0x5, m=0xfffff8000f71d100) at /home/git/head/sys/net/netisr.c:1063
> #60 0xffffffff808e5b6c in ether_input (ifp=0xfffff8000f2b7000, m=0xfffff8000f71d100)
>     at /home/git/head/sys/net/if_ethersubr.c:715
> #61 0xffffffff80938d6a in ieee80211_deliver_data (vap=0xfffff8000f2b1000, ni=0xfffffe0001817000, m=0xfffff8000f71d100)
>     at /home/git/head/sys/net80211/ieee80211_input.c:298
> #62 0xffffffff80974e77 in sta_input (ni=0xfffffe0001817000, m=0xfffff8000f71d100, rxs=0xfffffe02d858e440, rssi=0x82,
>     nf=0xb0) at /home/git/head/sys/net80211/ieee80211_sta.c:868
> #63 0xffffffff809383b8 in ieee80211_input_mimo (ni=0xfffffe0001817000, m=0xfffff8000f71d100, rx=0xfffffe02d858e560)
>     at /home/git/head/sys/net80211/ieee80211_input.c:103
> #64 0xffffffff804c158f in iwm_mvm_rx_rx_mpdu (sc=0xfffffe000108f000, pkt=0xfffff800071f8000, data=0xfffffe00010ce928)
>     at /home/git/head/sys/dev/iwm/if_iwm.c:2391
> #65 0xffffffff804bfe88 in iwm_notif_intr (sc=0xfffffe000108f000) at /home/git/head/sys/dev/iwm/if_iwm.c:4092
> #66 0xffffffff804bf55e in iwm_intr (arg=0xfffffe000108f000) at /home/git/head/sys/dev/iwm/if_iwm.c:4416
> #67 0xffffffff8070f7c8 in intr_event_execute_handlers (p=0xfffff80003df7aa0, ie=0xfffff80003def900)
>     at /home/git/head/sys/kern/kern_intr.c:1262
> #68 0xffffffff807105b7 in ithread_execute_handlers (p=0xfffff80003df7aa0, ie=0xfffff80003def900)
>     at /home/git/head/sys/kern/kern_intr.c:1275
> #69 0xffffffff807103e6 in ithread_loop (arg=0xfffff80007002500) at /home/git/head/sys/kern/kern_intr.c:1356
> #70 0xffffffff8070ad89 in fork_exit (callout=0xffffffff80710270 <ithread_loop>, arg=0xfffff80007002500,
>     frame=0xfffffe02d858eac0) at /home/git/head/sys/kern/kern_fork.c:1010
> #71 0xffffffff80c5447e in fork_trampoline () at /home/git/head/sys/amd64/amd64/exception.S:609
> #71 0xffffffff80c5447e in fork_trampoline () at /home/git/head/sys/amd64/amd64/exception.S:609
>
> up 71
> 609             call    fork_exit
>
> print $sp
> $1 = (void *) 0xfffffe02d858eac0
>
>
> up 35
> #35 0xffffffff80c0cc36 in uma_dbg_getslab (zone=0xfffff80003e15000, item=0xfffff801f0e4b800)
>     at /home/git/head/sys/vm/uma_dbg.c:219
> 219                     if (keg->uk_flags & UMA_ZONE_HASH)
>
> print $sp
> $37 = (void *) 0xfffffe02d858beb0
>
> so, 0x0eb0 bytes left on stack before fault at 0xfffffe02d858b000
>
>
> up 16
> #16 0xffffffff807a26c5 in cpu_search (cg=0xffffffff8146b148 <group+280>, low=0xfffffe02d858b298, high=0x0, match=0x1)
>     at /home/git/head/sys/kern/sched_ule.c:689
> 689                             cpu = CPU_FFS(&cpumask) - 1;
>
> print $sp
> $56 = (void *) 0xfffffe02d858b000
>
>
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"


More information about the freebsd-net mailing list