On Tue, Jun 21, 2016 at 11:48 AM, William Tu via iovisor-dev <[email protected]> wrote: > Hi, > > I'm running test_maps under net-next/samples/bpf/, commit > 601009780635. The code logic all make sense but I got the assertion > errors / coredump for some unknown reason under different compiler > optimization flags (-O0 and -O2). The test_hashmap_sanity() works fine > but fails at test_percpu_hashmap_sanity(). > > First run with normal build (which has -O2) > [root@vm-dev bpf]# ./test_maps > test_maps: samples/bpf/test_maps.c:137: test_percpu_hashmap_sanity: > Assertion `bpf_lookup_elem(map_fd, &key, value) == -1 && > (*__errno_location ()) == 2' failed.
hmm that's really odd. I don't see any issues with net-next. # ulimit -l unlimited # ./test_maps test_maps: OK > where line test_maps.c: 137 is > /* check that key=2 is not found */ > assert(bpf_lookup_elem(map_fd, &key, value) == -1 && errno == ENOENT); > > Running it with strace, everything looks correct (bpf() return -1 and > errno == ENOENT) > [root@vm-dev bpf]# strace ./test_maps > bpf(0x1, 0x7ffcafe7f290, 0x30) = -1 ENOENT (No such file or > directory) > write(2, "test_maps: samples/bpf/test_maps"..., 162test_maps: > samples/bpf/test_maps.c:137: test_percpu_hashmap_sanity: Assertion > `bpf_lookup_elem(map_fd, &key, value) == -1 && (*__errno_location ()) > == 2' failed. > ) = 162 > > Then I twisted Makefile with "-O0" instead of -O2, then line 137 > passes but it fails at line 161. > test_maps: samples/bpf/test_maps.c:161: test_percpu_hashmap_sanity: > Assertion `(expected_key_mask & next_key) == next_key' failed. that's even more weird. May be some compiler issue. I've tested with gcc 5.2 and 6.1 > > using gdb to debug: > Aborted (core dumped) > (gdb) f 4 > #4 0x0000000000401330 in test_percpu_hashmap_sanity (task=0, > data=0x0) at samples/bpf/test_maps.c:161 > 161 assert((expected_key_mask & next_key) == next_key); > (gdb) p key > $1 = 140736693748448 > (gdb) p next_key > $2 = 2 > > It seems that the value of the key is corrupted. Any suggestion for > how to debug this? yeah. that's definitely odd. Other than looking at generated asm. no other ideas. Daniel, Brenden, Jesper, did you ever see anything like it? _______________________________________________ iovisor-dev mailing list [email protected] https://lists.iovisor.org/mailman/listinfo/iovisor-dev
