[dpdk-users] [VMXNET3] vmxnet3_dev_stats_get() segfault when called by pktgen

longtb5 at viettel.com.vn longtb5 at viettel.com.vn
Fri Sep 8 05:13:05 CEST 2017


// Sorry I forgot to CC

I tested these:
$ sudo ./app/x86_64-native-linuxapp-gcc/pktgen
$ sudo ./app/x86_64-native-linuxapp-gcc/pktgen -l 0-3 -n 2 
$ sudo ./app/x86_64-native-linuxapp-gcc/pktgen -l 0-3 -n 2 -- -P -m "1.0, 2.1"
$ sudo ./tools/dpdk-run.py default

This is my default.cfg
# Run command and options
run = {
    'exec': (
        'sudo',
        '-E'
        ),

    # Application name and use app_path to help locate the app
    'app_name': 'pktgen',

    # using (sdk) or (target) for specific variables
    # add (app_name) of the application
    # Each path is tested for the application
    'app_path': (
        './app/%(target)s/%(app_name)s',
        '%(sdk)s/%(target)s/app/%(app_name)s',
        ),

        'dpdk': (
                '-l 0-1',
                '-n 2',
                '--proc-type auto',
                '--log-level 7',
                #'--socket-mem 2048,2048',
                #'--file-prefix pg'
                ),
        

        'app': (
                '-T',
                '-P',
                '--crc-strip',
                '-m 1.[2/5]'
                ),
        
        'misc': (
                #'-f',
                'themes/black-yellow.theme'
                )
        }

$ sudo ~/dev/dpdk/usertools/cpu_layout.py
cores =  [0, 1]
sockets =  [0, 1]

       Socket 0   Socket 1  
       --------   --------  
Core 0 [0]        [2]       
Core 1 [1]        [3]  

$ sudo ./dpdk/usertools/dpdk-devbind.py -s

Network devices using DPDK-compatible driver
============================================
0000:03:00.0 'VMXNET3 Ethernet Controller 07b0' drv=igb_uio unused=
0000:04:00.0 'VMXNET3 Ethernet Controller 07b0' drv=igb_uio unused=
0000:0b:00.0 'VMXNET3 Ethernet Controller 07b0' drv=igb_uio unused=
0000:0c:00.0 'VMXNET3 Ethernet Controller 07b0' drv=igb_uio unused=
0000:13:00.0 'VMXNET3 Ethernet Controller 07b0' drv=igb_uio unused=
0000:14:00.0 'VMXNET3 Ethernet Controller 07b0' drv=igb_uio unused=
0000:1b:00.0 'VMXNET3 Ethernet Controller 07b0' drv=igb_uio unused=
0000:1c:00.0 'VMXNET3 Ethernet Controller 07b0' drv=igb_uio unused=

Network devices using kernel driver
===================================
0000:05:00.0 'VMXNET3 Ethernet Controller 07b0' if=ens162 drv=vmxnet3 unused=igb_uio *Active*
0000:0d:00.0 'VMXNET3 Ethernet Controller 07b0' if=ens194 drv=vmxnet3 unused=igb_uio *Active*


>
>----- Original Message -----
>From: "keith wiles" <keith.wiles at intel.com>
>To: longtb5 at viettel.com.vn
>Cc: "Stephen Hemminger" <stephen at networkplumber.org>, users at dpdk.org, skhare at vmware.com
>Sent: Friday, September 8, 2017 9:22:25 AM
>Subject: Re: [dpdk-users] [VMXNET3] vmxnet3_dev_stats_get() segfault when called by pktgen
>
>
>> On Sep 7, 2017, at 7:07 PM, longtb5 at viettel.com.vn wrote:
>> 
>>> ----- Original Message -----
>>> From: "keith wiles" <keith.wiles at intel.com>
>>> To: "Stephen Hemminger" <stephen at networkplumber.org>
>>> Cc: longtb5 at viettel.com.vn, users at dpdk.org
>>> Sent: Thursday, September 7, 2017 11:49:39 PM
>>> Subject: Re: [dpdk-users] [VMXNET3] vmxnet3_dev_stats_get() segfault when called by pktgen
>>> 
>>> 
>>> I use the option EXTRA_CFLAGS on the command line to improve debug.
>>> 
>>> make install T=x86_64-native-linuxapp-gcc EXTRA_CFLAGS=“-g -O0”
>>> 
>>> Using -O0 for gdb is good for non-performance testing.
>>> 
>>> 
>>> Regards,
>>> Keith
>> 
>> Hi,
>> 
>> Thanks Keith and Stephen for the pointer. I have enabled the debug flags and acquired some more infos.
>> 
>> (gdb) r
>> Thread 1 "pktgen" received signal SIGSEGV, Segmentation fault.
>> 0x000000000075aa6c in vmxnet3_hw_tx_stats_get (hw=0x7fffb55b61c0, q=0, res=0x7fffffffdf10) at /home/tester/dpdk/drivers/net/vmxnet3/vmxnet3_ethdev.c:905
>> 905                VMXNET3_UPDATE_TX_STAT(hw, q, ucastPktsTxOK, res);
>> (gdb) backtrace
>> #0  0x000000000075aa6c in vmxnet3_hw_tx_stats_get (hw=0x7fffb55b61c0, q=0, res=0x7fffffffdf10) at /home/tester/dpdk/drivers/net/vmxnet3/vmxnet3_ethdev.c:905
>> #1  0x000000000075b3c8 in vmxnet3_dev_stats_get (dev=0xba34c0 <rte_eth_devices>, stats=0x7fffffffe000) at /home/tester/dpdk/drivers/net/vmxnet3/vmxnet3_ethdev.c:1049
>> #2  0x00000000004a2f76 in rte_eth_stats_get (port_id=0 '\000', stats=0x7fffffffe000) at /home/tester/dpdk/lib/librte_ether/rte_ethdev.c:1340
>> #3  0x0000000000467059 in pktgen_process_stats (tim=<optimized out>, arg=<optimized out>) at /home/tester/pktgen-dpdk/app/pktgen-stats.c:468
>> #4  0x000000000048568a in rte_timer_manage () at /home/tester/dpdk/lib/librte_timer/rte_timer.c:593
>> #5  0x00000000007b47dd in cli_start ()
>> #6  0x000000000044891b in pktgen_cli_start () at /home/tester/pktgen-dpdk/app/cli-functions.c:1434
>> #7  0x00000000004423f6 in main (argc=<optimized out>, argv=<optimized out>) at /home/tester/pktgen-dpdk/app/pktgen-main.c:470
>> (gdb) l
>> 900        {
>> 901        #define VMXNET3_UPDATE_TX_STAT(h, i, f, r)                \
>> 902                        ((r)->f = (h)->tqd_start[(i)].stats.f +        \
>> 903                                (h)->saved_tx_stats[(i)].f)
>> 904        
>> 905                VMXNET3_UPDATE_TX_STAT(hw, q, ucastPktsTxOK, res);
>> 906                VMXNET3_UPDATE_TX_STAT(hw, q, mcastPktsTxOK, res);
>> 907                VMXNET3_UPDATE_TX_STAT(hw, q, bcastPktsTxOK, res);
>> 908                VMXNET3_UPDATE_TX_STAT(hw, q, ucastBytesTxOK, res);
>> 909                VMXNET3_UPDATE_TX_STAT(hw, q, mcastBytesTxOK, res);
>> (gdb) p hw->tqd_start
>> $1 = (Vmxnet3_TxQueueDesc *) 0x0
>> 
>> The problem was on line 902.
>> This tqd_start is the "start address of all tx queue desc" according to comments in source code. Looks like it was not initialized properly.
>> I don't have enough knowledge to fix this. Any advice?
>
>I am not able to fix this problem, but it seems like it could be pktgen command line configuration issue. Normally these types of problems are because the application tried to access a port/queue that is not >setup. The tqd_start[] is an internal array to the VMXNET3 driver, so I do not know how it relates to the DPDK  API requests for port/queue.>
>
>Sorry, if you provided this before, but what is the command line you are using for Pktgen?
>
>> 
>> Regards,
>> BL.
>
>Regards,
>Keith




More information about the users mailing list