Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 May 2017 16:47:50 +0200
From:      Harry Schmalzbauer <freebsd@omnilan.de>
To:        Vincenzo Maffione <v.maffione@gmail.com>
Cc:        freebsd-net <freebsd-net@freebsd.org>
Subject:   Re: [panic] netmap(4) and if_lagg(4)
Message-ID:  <5926EE96.1010000@omnilan.de>
In-Reply-To: <CA%2B_eA9jf_VjcYUZynu5CXx-ps5z7PSxOky=QLpR-miqtxmMU5w@mail.gmail.com>
References:  <58CBCD7A.8060301@omnilan.de> <CA%2B_eA9iCT7evWUcZMA_ViKfrZnSHp3OpBTS5c4iJ9=ZjO-Pfgw@mail.gmail.com> <58CC23F5.7060507@omnilan.de> <CA%2B_eA9iajZOUFsnWKdodN7zMvst8wn0xViM4xxEx%2B41jw_0B3g@mail.gmail.com> <58CFA394.8070901@omnilan.de> <CA%2B_eA9jf_VjcYUZynu5CXx-ps5z7PSxOky=QLpR-miqtxmMU5w@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Bezüglich Vincenzo Maffione's Nachricht vom 20.03.2017 15:01 (localtime):
> 2017-03-20 10:40 GMT+01:00 Harry Schmalzbauer <freebsd@omnilan.de>:
> 
>> Bezüglich Vincenzo Maffione's Nachricht vom 17.03.2017 22:28 (localtime):

…
>> I'll try to provide more info about the panic this week.  Like discussed
>> offlist, the panic happend on a machine with the mentioned fix (latest
>> stable).
>> Perhaps this panic can be fixed, especialy for the vlan children.
>>
> 
> Ok, so if you create a vlan on an interface, and use netmap over the vlan,
> you get a deterministic crash? Does the crash happen when you start
> transmitting, receiving or both?
>

Sorry for the long delay.

I now have a crash dump and could provide more info if someone can
afford having a look at the lagg panic.
The panic with em0.vlan vanisehd with latest -stable (11.1-prerelease),
but using lagg reproducably panics.

Unread portion of the kernel message buffer:
066.051358 [ 254] generic_find_num_desc     called, in tx 1024 rx 1024
066.058166 [ 262] generic_find_num_queues   called, in txq 0 rxq 0
066.064756 [1673] netmap_interp_ringid      deprecated API, old ringid
0x0 -> ringid 0 reg 1


Fatal trap 12: page fault while in kernel mode
cpuid = 1; apic id = 01
fault virtual address   = 0xc
fault code              = supervisor read data, page not present
instruction pointer     = 0x20:0xffffffff80426894
stack pointer           = 0x28:0xfffffe03afccb750
frame pointer           = 0x28:0xfffffe03afccb770
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         = 12 (irq269: igb0:que 1)
trap number             = 12
panic: page fault
cpuid = 1
KDB: stack backtrace:
#0 0xffffffff805d8277 at kdb_backtrace+0x67
#1 0xffffffff80596d06 at vpanic+0x186
#2 0xffffffff80596b73 at panic+0x43
#3 0xffffffff80898472 at trap_fatal+0x322
#4 0xffffffff808984c9 at trap_pfault+0x49
#5 0xffffffff80897d06 at trap+0x286
#6 0xffffffff8087dfa1 at calltrap+0x8
#7 0xffffffff8069dc50 at vlan_input+0x1f0
#8 0xffffffff8068eb08 at ether_demux+0x128
#9 0xffffffff8068f7ab at ether_nh_input+0x31b
#10 0xffffffff806ab3f0 at netisr_dispatch_src+0xa0
#11 0xffffffff8068edb6 at ether_input+0x26
#12 0xffffffff8039f808 at igb_rxeof+0x738
#13 0xffffffff8039ebcf at igb_msix_que+0x10f
#14 0xffffffff8055e66c at intr_event_execute_handlers+0xec
#15 0xffffffff8055e956 at ithread_loop+0xd6
#16 0xffffffff8055bcc5 at fork_exit+0x85
#17 0xffffffff8087e4de at fork_trampoline+0xe
Uptime: 1m37s
Dumping 1535 out of 15529
MB:..2%..11%..21%..31%..41%..51%..61%..71%..81%..91%
…
Reading symbols from /usr/lib/debug/boot/kernel/uhid.ko.debug...done.
Loaded symbols for /usr/lib/debug/boot/kernel/uhid.ko.debug
#0  doadump (textdump=<value optimized out>) at pcpu.h:222
222     pcpu.h: No such file or directory.
        in pcpu.h
(kgdb) list *0xffffffff80426894
0xffffffff80426894 is in generic_rx_handler
(/usr/local/share/deploy-tools/RELENG_11/src/sys/dev/netmap/netmap_generic.c:628).
623             struct netmap_adapter *na = NA(ifp);
624             struct netmap_generic_adapter *gna = (struct
netmap_generic_adapter *)na;
625             u_int work_done;
626             u_int rr = MBUF_RXQ(m); // receive ring number
627
628             if (rr >= na->num_rx_rings) {
629                     rr = rr % na->num_rx_rings; // XXX expensive...
630             }
631
632             /* limit the size of the queue */

Thanks,

-harry



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5926EE96.1010000>