Yes! I get that easily on my home computer: while (true); do ./platform/linux-generic/test/ring/ringtest ; done just hangs after a short while. even on origin/master.... For some reason that refuses to hang at work...
I don't think it should stop the series, but it is definitively something to fix! Thanks Maxim! On 20 May 2016 at 21:04, Maxim Uvarov <maxim.uva...@linaro.org> wrote: > ok, now odp-check passed 34 patches on on 35 I caught ring test bug :) > > platform/linux-generic/test/ring/ringtest.c > > It rolls forever in that loop: > > do { > i = _ring_mc_dequeue_bulk(r_stress, src, MAX_BULK); > if (i == 0) { > for (i = 0; i < MAX_BULK; i++) { > if (src[i] != (void *)(unsigned long)i) { > free(src); > printf("data mismatch.. lockless ops fail\n"); > return -1; > } > } > free(src); > printf("\n Test OK !\n"); > return 0; > } > } while (1); > > > which does not return due to _ring_mc_dequeue_bulk() always return -ENOENT: > > #0 ___ring_mc_do_dequeue (r=0x2b65fec00000, > obj_table=obj_table@entry=0x2b66080008c0, > n=n@entry=32, > behavior=behavior@entry=_RING_QUEUE_FIXED) at pktio/ring.c:363 > 363 uint32_t mask = r->prod.mask; > (gdb) l > 358 uint32_t cons_head, prod_tail; > 359 uint32_t cons_next, entries; > 360 const unsigned max = n; > 361 int success; > 362 unsigned i; > 363 uint32_t mask = r->prod.mask; > 364 > 365 /* move cons.head atomically */ > 366 do { > 367 /* Restore n as it may change every loop */ > (gdb) p mask > $4 = <optimized out> > (gdb) n > 370 cons_head = r->cons.head; > (gdb) > 376 entries = (prod_tail - cons_head); > (gdb) > 370 cons_head = r->cons.head; > (gdb) p entries > $5 = <optimized out> > (gdb) n > 379 if (n > entries) { > (gdb) > 380 if (behavior == _RING_QUEUE_FIXED) > (gdb) p n > $6 = 32 > (gdb) n > 381 return -ENOENT; > (gdb) > > > That should not be related to current patch series, but we need to fix it. > > Maxim. > > > On 05/20/16 19:30, Christophe Milard wrote: > >> Since v8 >> -Fixed error in patch 9 generation erroneous file (Maxim) >> >> Since v7 >> -fixed rebase error between patch 7 and 8 (sorry Maxim) >> >> Since v6 >> -rebased >> -regrouping history, squashing patch 1 and 12; 4, 5 and 12 (Petri) >> -mixed mode test removed (but still claimed to be supported in ODP). >> (Petri) >> >> Since v5 >> -rebased >> -patch removing old unused helper code dropped. (Petri) >> -Doc update to discourage usage of the old functions. (Petri, Mike) >> >> Since v4: >> -updates following Brian's comments >> >> Since v3: >> -fixed rebase error (Christophe) >> -rebased >> >> Since v2: >> -serious rebase following clash with dba05a28 (api: init: add instance >> handle) >> -squashing the validation changes. >> >> Since v1: >> -variable declaration gathered in function 's head (Petri) >> -linux prefix removed from helper's types and function names (Mike, >> Christophe) >> >> Hi, >> >> This patch series adds the ability to run tests/ exemples / perf-test >> in "process mode" (i.e letting OPD threads being linux processes) >> It it hence tackling ODP-171. >> >> This is achieved in 2 main steps: >> >> A] >> The 2 pairs of helper functions: >> odph_linux_pthread_create(), odph_linux_pthread_join() >> and >> odph_linux_process_fork_n(), odph_linux_process_wait_n() >> are complemented by: >> odph_linux_odpthreads_create() and odph_linux_odpthreads_join() >> The latter's callers are unaware of the actual implementation of the ODP >> thread (making test truly platform agnostic). >> The helper functions decide at run time whether an odp thread is to be >> a linux process or pthread based on the command line argument. >> >> B] each test/example now calls a new helper function, >> odph_linux_parse_options(), so that the helper can get its own arguments >> out of the command line. >> Currentely supported args is: --odph_proc. >> Defaults assumes thread. >> >> The changed are first done on the shmem tests, and thereafter propagated >> to other helper users. >> Note that this patch series enable the option but does not affect >> make check at this time: make check still calls the tests with no options >> which default to thread mode. >> >> ---------------------------------------------------------------- >> >> Christophe Milard (35): >> helpers: adding command line argument parsing >> validation: common: adding command line argument parsing >> validation: shmem: adding command line argument parsing >> helpers: linux: creating functions to handle odpthreads >> helper: test: adding odpthread functions tests >> validation: using implementation agnostic function for ODP threads >> validation: most tests: adding command line argument parsing >> validation: init: adding command line argument parsing >> validation: pktio: adding command line argument parsing >> performance: odp_scheduling: proc mode done by helper >> performance: odp_pktio_perf: using agnostic function for ODP threads >> performance: odp_pktio_perf: adding helper cmd line parsing >> performance: odp_l2fwd: using agnostic function for ODP threads >> performance: odp_l2fwd: adding helper cmd line parsing >> performance: crypto: using agnostic function for ODP threads >> performance: crypto: adding helper cmd line parsing >> example: classifier: using agnostic function for ODP threads >> example: classifier: adding helper cmd line parsing >> example: generator: using agnostic function for ODP threads >> example: generator: adding helper cmd line parsing >> example: ipsec: using agnostic function for ODP threads >> example: ipsec: adding helper cmd line parsing >> example: l2fwd_simple: using agnostic function for ODP threads >> example: l2fwd_simple: adding helper cmd line parsing >> example: pktio: using agnostic function for ODP threads >> example: pktio: adding helper cmd line parsing >> example: time: using agnostic function for ODP threads >> example: time: adding helper cmd line parsing >> example: timer: using agnostic function for ODP threads >> example: timer: adding helper cmd line parsing >> example: switch: using agnostic function for ODP threads >> example: switch: adding helper cmd line parsing >> linux-generic: test: ringtest: using agnostic function for ODP threads >> linux-generic: test: ringtest: adding helper cmd line parsing >> doc: implementers-guide: adding helper recommendations >> >> doc/implementers-guide/implementers-guide.adoc | 32 ++ >> example/classifier/odp_classifier.c | 39 +-- >> example/generator/odp_generator.c | 45 +-- >> example/ipsec/odp_ipsec.c | 27 +- >> example/l2fwd_simple/odp_l2fwd_simple.c | 47 ++- >> example/packet/odp_pktio.c | 45 +-- >> example/switch/odp_switch.c | 26 +- >> example/time/time_global_test.c | 17 +- >> example/timer/odp_timer_test.c | 26 +- >> helper/include/odp/helper/linux.h | 138 +++++++- >> helper/linux.c | 382 >> +++++++++++++++++++++ >> helper/test/.gitignore | 1 + >> helper/test/Makefile.am | 7 +- >> helper/test/odpthreads.c | 100 ++++++ >> helper/test/odpthreads_as_processes | 14 + >> helper/test/odpthreads_as_pthreads | 14 + >> platform/linux-generic/test/pktio/pktio_run.sh | 21 +- >> .../linux-generic/test/pktio/pktio_run_dpdk.sh | 17 +- >> .../linux-generic/test/pktio/pktio_run_netmap.sh | 5 +- >> .../linux-generic/test/pktio/pktio_run_pcap.sh | 5 +- >> platform/linux-generic/test/pktio/pktio_run_tap.sh | 6 +- >> platform/linux-generic/test/ring/ringtest.c | 24 +- >> test/performance/odp_crypto.c | 24 +- >> test/performance/odp_l2fwd.c | 37 +- >> test/performance/odp_pktio_perf.c | 34 +- >> test/performance/odp_scheduling.c | 91 ++--- >> test/validation/atomic/atomic.c | 40 ++- >> test/validation/atomic/atomic.h | 2 +- >> test/validation/atomic/atomic_main.c | 4 +- >> test/validation/barrier/barrier.c | 14 +- >> test/validation/barrier/barrier.h | 2 +- >> test/validation/barrier/barrier_main.c | 4 +- >> test/validation/buffer/buffer.c | 10 +- >> test/validation/buffer/buffer.h | 2 +- >> test/validation/buffer/buffer_main.c | 4 +- >> test/validation/classification/classification.c | 10 +- >> test/validation/classification/classification.h | 2 +- >> .../classification/classification_main.c | 4 +- >> test/validation/common/odp_cunit_common.c | 24 +- >> test/validation/common/odp_cunit_common.h | 6 +- >> test/validation/cpumask/cpumask.c | 10 +- >> test/validation/cpumask/cpumask.h | 2 +- >> test/validation/cpumask/cpumask_main.c | 4 +- >> test/validation/crypto/crypto.c | 6 +- >> test/validation/crypto/crypto.h | 2 +- >> test/validation/crypto/crypto_main.c | 4 +- >> test/validation/errno/errno.c | 10 +- >> test/validation/errno/errno.h | 2 +- >> test/validation/errno/errno_main.c | 4 +- >> test/validation/hash/hash.c | 10 +- >> test/validation/hash/hash.h | 2 +- >> test/validation/hash/hash_main.c | 4 +- >> test/validation/init/init.c | 18 +- >> test/validation/init/init.h | 6 +- >> test/validation/init/init_main_abort.c | 4 +- >> test/validation/init/init_main_log.c | 4 +- >> test/validation/init/init_main_ok.c | 4 +- >> test/validation/lock/lock.c | 50 +-- >> test/validation/lock/lock.h | 2 +- >> test/validation/lock/lock_main.c | 4 +- >> test/validation/packet/packet.c | 10 +- >> test/validation/packet/packet.h | 2 +- >> test/validation/packet/packet_main.c | 4 +- >> test/validation/pktio/pktio.c | 10 +- >> test/validation/pktio/pktio.h | 2 +- >> test/validation/pktio/pktio_main.c | 4 +- >> test/validation/pool/pool.c | 10 +- >> test/validation/pool/pool.h | 2 +- >> test/validation/pool/pool_main.c | 4 +- >> test/validation/queue/queue.c | 10 +- >> test/validation/queue/queue.h | 2 +- >> test/validation/queue/queue_main.c | 4 +- >> test/validation/random/random.c | 10 +- >> test/validation/random/random.h | 2 +- >> test/validation/random/random_main.c | 4 +- >> test/validation/scheduler/scheduler.c | 18 +- >> test/validation/scheduler/scheduler.h | 2 +- >> test/validation/scheduler/scheduler_main.c | 4 +- >> test/validation/shmem/shmem.c | 16 +- >> test/validation/shmem/shmem.h | 2 +- >> test/validation/shmem/shmem_main.c | 4 +- >> test/validation/std_clib/std_clib.c | 10 +- >> test/validation/std_clib/std_clib.h | 2 +- >> test/validation/std_clib/std_clib_main.c | 4 +- >> test/validation/system/system.c | 10 +- >> test/validation/system/system.h | 2 +- >> test/validation/system/system_main.c | 4 +- >> test/validation/thread/thread.c | 14 +- >> test/validation/thread/thread.h | 2 +- >> test/validation/thread/thread_main.c | 4 +- >> test/validation/time/time.c | 10 +- >> test/validation/time/time.h | 2 +- >> test/validation/time/time_main.c | 4 +- >> test/validation/timer/timer.c | 10 +- >> test/validation/timer/timer.h | 2 +- >> test/validation/timer/timer_main.c | 4 +- >> test/validation/traffic_mngr/traffic_mngr.c | 6 +- >> test/validation/traffic_mngr/traffic_mngr.h | 2 +- >> test/validation/traffic_mngr/traffic_mngr_main.c | 4 +- >> 99 files changed, 1316 insertions(+), 410 deletions(-) >> create mode 100644 helper/test/odpthreads.c >> create mode 100755 helper/test/odpthreads_as_processes >> create mode 100755 helper/test/odpthreads_as_pthreads >> >> > _______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp