xapian-core 1.4.21: 20 tests fail on i686
Vitaly Chikunov
vt at altlinux.org
Sun Oct 23 14:37:04 BST 2022
On Sun, Oct 23, 2022 at 03:11:07PM +0300, Vitaly Chikunov wrote:
> (Unable to register on bug tracker, so writing here.)
> While building package for ALT Linux I found that when tests are run on
> i686 (32-bit x86 flavour) with 'make check' for 1.4.21 release, they
> fail with:
>
> 1 of 4 tests failed
>
> this is
>
> ./apitest backend inmemory: 326 tests passed, 4 failed, 8 skipped.
> ./apitest backend glass: 423 tests passed, 4 failed, 3 skipped.
> ./apitest backend singlefile_glass: 261 tests passed, 4 failed, 1 skipped.
> ./apitest backend multi_glass: 351 tests passed, 2 failed, 4 skipped.
> ./apitest backend chert: 419 tests passed, 4 failed, 1 expected failures, 3 skipped.
> ./apitest backend multi_chert: 303 tests passed, 2 failed, 1 expected failures, 4 skipped.
> ./apitest total: 4036 tests passed, 20 failed, 9 expected failures, 47 skipped.
> FAIL: apitest
>
> Detailed failure list:
>
> builder at i586:~/RPM/BUILD/xapian-core-1.4.21$ grep FAILED log -A3
> Running test: checkstatsweight1... FAILED
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight2... FAILED
> Query((a SYNONYM absolut))
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight3... FAILED
> Query(WILDCARD SYNONYM a)
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight4... FAILED
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight1... FAILED
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight2... FAILED
> Query((a SYNONYM absolut))
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight3... FAILED
> Query(WILDCARD SYNONYM a)
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight4... FAILED
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight1... FAILED
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight2... FAILED
> Query((a SYNONYM absolut))
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight3... FAILED
> Query(WILDCARD SYNONYM a)
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight4... FAILED
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight1... FAILED
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight2... FAILED
> Query((a SYNONYM absolut))
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight1... FAILED
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight2... FAILED
> Query((a SYNONYM absolut))
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight3... FAILED
> Query(WILDCARD SYNONYM a)
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight4... FAILED
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight1... FAILED
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
> --
> Running test: checkstatsweight2... FAILED
> Query((a SYNONYM absolut))
> api_weight.cc:1013: ((get_average_length()) == (db.get_avlength()))
> Expected 'get_average_length()' and 'db.get_avlength()' to be equal: were 30.8333 and 30.8333
>
> (Empty lines removed.) On other architectures we build tests succeed (aarch64,
> arm7hf, ppc64le, x86_64). Would appreciate help resolving this.
To add, this is GCC 12.1.1. As a debugging exercise I printed the
numbers and they shown exactly the same, but subtracting them produces a
value > 0. AFAIK '==' comparison of doubles is unsafe operation in
general (there is GCC warning about that -Wfloat-equal). As a dirty hack
I explicitly cast these doubles to (float) like this
TEST_EQUAL((float)get_average_length(), (float)db.get_avlength());
This of course is not a solution.
Thanks,
>
> Thanks,
>
More information about the Xapian-devel
mailing list