libos-nuse / linux-libos-tools

userspace tools for linux libos
GNU General Public License v2.0
95 stars 20 forks source link

iperf coredump #21

Open vincentmli opened 9 years ago

vincentmli commented 9 years ago

I am running libos-nuse on bare metal with dpdk 1.7.1, ping works fine, but running iperf I got coredump as below, it looks rte_pktmbuf_alloc fail to allocate rte_pktmbuf, I don't know why it fail

(gdb) bt
#0  0x00007f3bead63b66 in rte_pktmbuf_lastseg (m=0x0) at /home/vincent/net-next-nuse/arch/lib/tools/dpdk/build/include/rte_mbuf.h:884
#1  0x00007f3bead63b93 in rte_pktmbuf_append (m=0x0, len=1514) at /home/vincent/net-next-nuse/arch/lib/tools/dpdk/build/include/rte_mbuf.h:975
#2  0x00007f3bead63e95 in nuse_vif_dpdk_write (vif=0x8192f0, dev=0x8ada60, data=0x7f3bc413e376 "", len=1514) at nuse-vif-dpdk.c:164
#3  0x00007f3beadd2af3 in nuse_vif_write (vif=0x8192f0, dev=0x8ada60, data=0x7f3bc413e376 "", len=1514) at nuse-vif.c:32
#4  0x00007f3beadd7cec in nuse_dev_xmit (kernel=0x0, dev=0x8ada60, data=0x7f3bc413e376 "", len=1514) at nuse.c:298
#5  0x00007f3beb0f0617 in kernel_dev_xmit (skb=0x7f3bc413e1e8, dev=0x8ada60) at arch/lib/lib-device.c:38
#6  0x00007f3beb14c258 in __netdev_start_xmit (ops=<optimized out>, more=false, dev=0x8ada60, skb=0x7f3bc413e1e8) at ./include/linux/netdevice.h:3609
#7  netdev_start_xmit (more=false, txq=0x8aaf38, dev=0x8ada60, skb=0x7f3bc413e1e8) at ./include/linux/netdevice.h:3618
#8  xmit_one (skb=skb@entry=0x7f3bc413e1e8, dev=dev@entry=0x8ada60, txq=txq@entry=0x8aaf38, more=more@entry=false) at net/core/dev.c:2687
#9  0x00007f3beb14d065 in dev_hard_start_xmit (first=first@entry=0x7f3bc413e1e8, dev=dev@entry=0x8ada60, txq=txq@entry=0x8aaf38, ret=ret@entry=0x7f3be991a730) at net/core/dev.c:2703
#10 0x00007f3beb16709e in sch_direct_xmit (skb=skb@entry=0x7f3bc413e1e8, q=q@entry=0x8b6340, dev=dev@entry=0x8ada60, txq=txq@entry=0x8aaf38, root_lock=root_lock@entry=0x8b63ec,
    validate=validate@entry=true) at net/sched/sch_generic.c:165
#11 0x00007f3beb14d335 in __dev_xmit_skb (txq=0x8aaf38, dev=0x8ada60, q=0x8b6340, skb=0x7f3bc413e1e8) at net/core/dev.c:2873
#12 __dev_queue_xmit (skb=skb@entry=0x7f3bc413e1e8, accel_priv=accel_priv@entry=0x0) at net/core/dev.c:3076
#13 0x00007f3beb14d5aa in dev_queue_xmit_sk (sk=<optimized out>, skb=skb@entry=0x7f3bc413e1e8) at net/core/dev.c:3142
#14 0x00007f3beb1a0ed9 in dev_queue_xmit (skb=0x7f3bc413e1e8) at ./include/linux/netdevice.h:2186
#15 neigh_hh_output (skb=<optimized out>, hh=<optimized out>) at ./include/net/neighbour.h:467
#16 dst_neigh_output (dst=<optimized out>, skb=0x7f3bc413e1e8, n=0x7f3bc40219d8) at ./include/net/dst.h:401
#17 ip_finish_output2 (skb=<optimized out>, sk=0x0) at net/ipv4/ip_output.c:210
#18 ip_finish_output (sk=sk@entry=0x7f3bc4020d28, skb=skb@entry=0x7f3bc413e1e8) at net/ipv4/ip_output.c:284
#19 0x00007f3beb1a1efb in NF_HOOK_COND (cond=<optimized out>, okfn=0x7f3beb1a0cb0 <ip_finish_output>, out=0x8ada60, in=0x0, skb=0x7f3bc413e1e8, sk=0x7f3bc4020d28, hook=4, pf=2 '\002')
    at ./include/linux/netfilter.h:233
#20 ip_output (sk=0x7f3bc4020d28, skb=0x7f3bc413e1e8) at net/ipv4/ip_output.c:356
#21 0x00007f3beb1a18f8 in ip_local_out (skb=0x7f3bc413e1e8) at ./include/net/ip.h:119
#22 ip_queue_xmit (sk=0x7f3bc4020d28, skb=0x7f3bc413e1e8, fl=0x7f3bc4021020) at net/ipv4/ip_output.c:454
#23 0x00007f3beb1b8f31 in tcp_transmit_skb (sk=sk@entry=0x7f3bc4020d28, skb=0x7f3bc413e1e8, skb@entry=0x7f3bc413e108, clone_it=clone_it@entry=1, gfp_mask=gfp_mask@entry=32)
    at net/ipv4/tcp_output.c:1041
#24 0x00007f3beb1b97a0 in tcp_write_xmit (sk=0x7f3bc4020d28, mss_now=1448, nonagle=0, push_one=0, gfp=32) at net/ipv4/tcp_output.c:2139
#25 0x00007f3beb1b9c79 in __tcp_push_pending_frames (sk=sk@entry=0x7f3bc4020d28, cur_mss=<optimized out>, nonagle=nonagle@entry=0) at net/ipv4/tcp_output.c:2314
#26 0x00007f3beb1b50c7 in tcp_push_pending_frames (sk=0x7f3bc4020d28) at ./include/net/tcp.h:1543
#27 tcp_data_snd_check (sk=0x7f3bc4020d28) at net/ipv4/tcp_input.c:4883
#28 tcp_rcv_established (sk=sk@entry=0x7f3bc4020d28, skb=skb@entry=0x7f3bbc0008c8, th=0x7f3bbc0009fa, len=<optimized out>) at net/ipv4/tcp_input.c:5348
#29 0x00007f3beb1bdc0c in tcp_v4_do_rcv (sk=sk@entry=0x7f3bc4020d28, skb=skb@entry=0x7f3bbc0008c8) at net/ipv4/tcp_ipv4.c:1399
#30 0x00007f3beb1c01b0 in tcp_v4_rcv (skb=0x7f3bbc0008c8) at net/ipv4/tcp_ipv4.c:1633
#31 0x00007f3beb19b992 in ip_local_deliver_finish (sk=sk@entry=0x0, skb=skb@entry=0x7f3bbc0008c8) at net/ipv4/ip_input.c:216
#32 0x00007f3beb19bfa2 in NF_HOOK_THRESH (thresh=-2147483648, okfn=0x7f3beb19b8b0 <ip_local_deliver_finish>, out=0x0, in=<optimized out>, skb=0x7f3bbc0008c8, sk=0x0, hook=1, pf=2 '\002')
    at ./include/linux/netfilter.h:220
#33 NF_HOOK (okfn=0x7f3beb19b8b0 <ip_local_deliver_finish>, out=0x0, in=<optimized out>, skb=0x7f3bbc0008c8, sk=0x0, hook=1, pf=2 '\002') at ./include/linux/netfilter.h:242
#34 ip_local_deliver (skb=0x7f3bbc0008c8) at net/ipv4/ip_input.c:256
#35 0x00007f3beb19c203 in NF_HOOK_THRESH (thresh=-2147483648, okfn=0x7f3beb19bae0 <ip_rcv_finish>, out=0x0, in=0x8ada60, skb=0x7f3bbc0008c8, sk=0x0, hook=0, pf=2 '\002')
    at ./include/linux/netfilter.h:220
#36 NF_HOOK (okfn=0x7f3beb19bae0 <ip_rcv_finish>, out=0x0, in=0x8ada60, skb=0x7f3bbc0008c8, sk=0x0, hook=0, pf=2 '\002') at ./include/linux/netfilter.h:242
#37 ip_rcv (skb=<optimized out>, dev=0x8ada60, pt=<optimized out>, orig_dev=<optimized out>) at net/ipv4/ip_input.c:455
#38 0x00007f3beb14a0d3 in __netif_receive_skb_core (skb=0x7f3bbc0008c8, pfmemalloc=<optimized out>) at net/core/dev.c:3895
#39 0x00007f3beb14a944 in process_backlog (napi=0x7f3beb658e70 <softnet_data+112>, quota=64) at net/core/dev.c:4506
#40 0x00007f3beb14a78e in napi_poll (n=0x7f3beb658e70 <softnet_data+112>, repoll=repoll@entry=0x7f3be991ace0) at net/core/dev.c:4744
#41 0x00007f3beb14aa68 in net_rx_action (h=<optimized out>) at net/core/dev.c:4809
#42 0x00007f3beb0f0ef3 in do_softirq () at arch/lib/softirq.c:69
#43 0x00007f3beb0f0f58 in softirq_task_function (context=<optimized out>) at arch/lib/softirq.c:28
#44 0x00007f3beadd788f in nuse_task_start_trampoline (context=0x814250) at nuse.c:175
#45 0x00007f3bea616182 in start_thread (arg=0x7f3be991b700) at pthread_create.c:312
---Type <return> to continue, or q <return> to quit---
#46 0x00007f3bea34347d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
thehajime commented 9 years ago

thanks for the report.

I think at least nuse should handle rte_pktmbuf_alloc() failure by checking returned address. for the error of mbuf alloc failure, I will investigate it (I suspect the lack of rte_pktmbuf_free may cause this issue).