[dpdk-stable] [PATCH] test/common: fix log2 check

Aaron Conole aconole at redhat.com
Wed Dec 4 22:19:56 CET 2019


David Marchand <david.marchand at redhat.com> writes:

> We recently started to get random failures on the common_autotest ut with
> clang on Ubuntu 16.04.6.
>
> Example: https://travis-ci.com/DPDK/dpdk/jobs/263177424
>
> Wrong rte_log2_u64(0) val 0, expected ffffffff
> Test Failed
>
> The ut passes 0 to log2() to get an expected value.
>
> Quoting log2 / log(3) manual:
> If x is zero, then a pole error occurs, and the functions return
> -HUGE_VAL, -HUGE_VALF, or -HUGE_VALL, respectively.
>
> rte_log2_uXX helpers handle 0 as a special value and return 0.
> Let's have dedicated tests for this case.
>
> Fixes: 05c4345ef5c2 ("test: add unit test for integer log2 function")
> Cc: stable at dpdk.org
>
> Signed-off-by: David Marchand <david.marchand at redhat.com>
> ---

Acked-by: Aaron Conole <aconole at redhat.com>

Somethings that concern me:

1.  A log2(0) should probably be an undetermined value, but this
    effectively makes log2(0) == log2(1) so that if anyone uses these
    for some mathematical work, it will have an exceptional behavior.  I
    know it's documented from a programmer perspective, but I am all for
    documenting the mathematical side effect as well.

2.  Why hasn't this been complaining for so long?  Or has it and we just
    haven't noticed?  Were some compiler flags changed recently? (maybe
    -funsafe-math was always set or something?)

-Aaron



More information about the stable mailing list