New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Runtime tests are failing on several hardware architectures #720
Comments
When I was doing the windows port a huge number of bcftools failures were down to variation in the last digit of a floating point number - ie rounding differences. I haven't looked at this particular issue, but we really need a more robust comparison mechanism to determine equality. The other thing we need to be careful of is assuming zlib. There are many equally valid deflate streams, but IIRC using say the intel deflate causes the test harness to fail too. |
Hi James,
On Mon, Dec 11, 2017 at 12:49:34PM +0000, James Bonfield wrote:
When I was doing the windows port a huge number of bcftools failures were down to variation in the last digit of a floating point number - ie rounding differences. I haven't looked at this particular issue, but we really need a more robust comparison mechanism to determine equality.
The observed test failures would fit to this observation at least. I fully agre that more robust floating point comparison should be the first means to takle this.
|
A simple and quick hack for now is to modify |
On Mon, Dec 11, 2017 at 03:04:18PM +0000, pd3 wrote:
A simple and quick hack for now is to modify `test.pl` to round float values first before comparing.
I admit that sounds promising, but I'd leave this solution rather to upstream than fiddling around in code I never touched before.
|
Thinking about it more, this is actually the right place to do it. The program works correctly, these rounding problems are just an artifact of evaluation. The rounding would be done on the strings entering the comparison here https://github.com/pd3/bcftools/blob/develop/test/test.pl#L426 |
Agreed @tillea this is something for us to do. There may be code already for handling this for Windows; eg lines 450ish in https://github.com/samtools/bcftools/pull/609/files?diff=split#diff-5e25dd32ec9d21cde3301825bf56195c That was mainly for how exponents are printed, but it would be easy enough to do a regexp matching exponentials and reformat using a limited precision printf command. I'm not sure ALL of the errors will be this nature though. I suspect there are other things which are failures-in-waiting, such as relying on zlib output to always match (it may not if we used another zlib library). We need to build a virtual machine somewhere I guess to test these whacky platforms. |
Just for the sake of completeness: I've built bcftools version 1.6 for Debian experimental and the issue has not changed in the latest version. |
Most of these are cosmetic, but some are likely to fix at least some of the platform-dependant test failures reported in #720. Specifically the merging code relies on the correct number of fields in the FORMAT/Number=G tags.
Can you try with this latest commit please? I expect some of the failures might be fixed by this. For the rest, it would be helpful to see all the |
On Wed, Dec 13, 2017 at 05:08:45AM -0800, pd3 wrote:
Can you try with this latest commit please? I expect some of the failures might be fixed by this. For the rest, it would be helpful to see all the `/<<PKGBUILDDIR>>/test/*.new` files created by test script.
Thanks for the patch. Unfortunately it has not changed the results at all (guessed from the number of the failed tests of the architectures).
|
2020 update: tests still fail on samtools/htslib#1023 (comment)
One example, as noted in samtools/htslib#355 (comment)
|
End of 2020 update: tests still fail on big-endian architectures like |
Down to 12 failed tests with bcftools 1.19 on |
Hi,
the Debian package of bcftools received a bug report pointing to lots of build time test failures for several architectures. For instance you can check a log of a build on i386 (just seek for the string ".. failed ..."). There is an overview page about all architectures which leads to the conclusion that there are different types of failures for different architectures (wild guessing from different numbers of failures per some architectures while other architectures show the same numver failures).
While most probably bcftools is mostly run on amd64 architecture and also arm it is comiling fine this kind of errors typically are hints for issues in the code that deserves fixing in general.
Please note that while the bug report is against version 1.3.1 the logs are belonging also to version 1.5.4.
Kind regards, Andreas.
The text was updated successfully, but these errors were encountered: