Hi,
I used the hack #4725 from Kaspar to run the gnrc_border_router example on a pba-d-01-kw2x board. It worked fine. Now the branch with the hack from Kaspar was deleted [1].
Hence I've tested the gnrc_border_router exampleofthe latest RIOT version from GitHub.
I tried to ping an interface of the border router and got a kernel panic:
> ping6 fe80::202:f8ff:fe70:f121%6
ping6 fe80::202:f8ff:fe70:f121%6
0x31a5
*** RIOT kernel panic:
FAILED ASSERTION.
pid | name | state Q | pri | stack ( used) | location
1 | idle | pending Q | 15 | 256 ( 128) | 0x1fffd66c
2 | main | pending Q | 7 | 1536 ( 916) | 0x1fffd76c
3 | 6lo | bl rx _ | 3 | 1024 ( 404) | 0x200011f0
4 | ipv6 | running Q | 4 | 1024 ( 784) | 0x1ffffce8
5 | udp | bl rx _ | 5 | 1024 ( 300) | 0x20001a08
6 | gnrc_ethos | bl rx _ | 3 | 1024 ( 304) | 0x1fffca5c
7 | kw2xrf | bl rx _ | 3 | 1024 ( 272) | 0x1ffff8b0
8 | uhcp | bl mutex _ | 6 | 1536 ( 988) | 0x20001e0c
> SUM | | | 8448 ( 4096)
*** halted.
I thinkit should be possible to run thegnrc_border_router example ofthe latest RIOT version from GitHub on a pba‑d‑01‑kw2xboard successfully.
Am I right or should I use a differentboard for the border router example?
Axl
[1] https://github.com/RIOT-OS/RIOT/pull/4725
Hey Axl,
0x31a5
*** RIOT kernel panic:
FAILED ASSERTION.
Did you check where it chrashed (0x31a5)? Try to find the address in
objdump out ("BOARD=<board> make info-objdump").
I thinkit should be possible to run thegnrc_border_router example ofthe
latest RIOT version from GitHub on a pba‑d‑01‑kw2xboard successfully.
Definitely. If you reproducably crash your board, it would actually be
nice to find out which change is responsible.
Kaspar
Hey Kaspar,
I did "arm-none-eabi-objdump -S bin/pba-d-01-kw2x/gnrc_border_router.elf".
I think this is the relevant part of the output:
...
static void _receive(gnrc_pktsnip_t *pkt)
{
3194: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
kernel_pid_t iface = KERNEL_PID_UNDEF;
gnrc_pktsnip_t *ipv6, *netif, *first_ext;
ipv6_hdr_t *hdr;
assert(pkt != NULL);
3198: 4604 mov r4, r0
319a: b918 cbnz r0, 31a4 <_receive+0x10>
319c: 2003 movs r0, #3
319e: 494e ldr r1, [pc, #312] ; (32d8 <_receive+0x144>)
31a0: f7fd f97a bl 498 <core_panic>
netif = gnrc_pktsnip_search_type(pkt, GNRC_NETTYPE_NETIF);
31a4: f04f 31ff mov.w r1, #4294967295
31a8: f002 fce0 bl 5b6c <gnrc_pktsnip_search_type>
assert(netif);
31ac: 2800 cmp r0, #0
31ae: d0f5 beq.n 319c <_receive+0x8>
iface = ((gnrc_netif_hdr_t *)netif->data)->if_pid;
31b0: 6883 ldr r3, [r0, #8]
31b2: 885e ldrh r6, [r3, #2]
31b4: 46a0 mov r8, r4
31b6: 4625 mov r5, r4
first_ext = pkt;
...
Can I do something else?
Axl
Hi Axl,
if I see this correctly, you run into a problem that should be fixed by now.
Can you update your version to current master and try again?
Cheers,
Oleg
Hey Oleg,
I updated my version to the current master and tried it again.
Now it works perfect!
Cheers,
Axl