-
Notifications
You must be signed in to change notification settings - Fork 138
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
Test failures on s390x: endianness problems? #210
Comments
I think the issue might be that the underlying mdlayher/netlink library is not big-endian compatible: mdlayher/netlink#201 (many tests are skipped on big-endian systems in that package). |
It is big endian compatible, but a lot of the tests use byte fixtures that are little endian. I don't have access to any big endian machines, but PRs are welcome. |
Thanks for the reassuring answer regarding the code's correctness. I've decided to go ahead and upload a package that allows the test suite to fail on big endian archs. I'm not really a Go developer or a porter, so I can't really provide a pull request to fix the tests. However, I do have access to a s390x porter box (via Debian), and can test any commits or branches you'd like me to. |
Thanks for having a look, @mdlayher. Please let us know here when a new netlink release is available and I can pull that in :) |
No worries! I will try to do that today. |
I've released netlink v1.7.1 and genetlink v1.3.1 which fix all known endianness test failures. A lot of my tests hardcode fixed little endian byte dumps which isn't ideal but is useful for development. |
Thanks, now pulled in! @CyrilBrulebois Can you check which issues remain, if any, please? |
@stapelberg Sure thing, but as far as I understand:
|
I only had a brief look thus far, maybe I have misinterpreted what I was seeing. I’m not sure if I get a chance to have a closer look over the next few weeks, so any help with this is appreciated. |
[WIP] Fixes google#210
Hi @CyrilBrulebois and @stapelberg, I have created a draft PR #218 with a fix approach for one test. In the log file, I see that there are a lot of failed test cases and I can change them all. Unfortunately, as there are a lot of tests to change, this requires time and I would like to get this approach reviewed and tested against a BE system before proceeding with a complete refactor. If you can, please let me know whether this fixed the test on a BE system and whether this approach makes sense. If you have ideas how to best tackle this issue (e.g. skip tests on BE systems? or something else?), feel free to let me know. |
I don’t have time to test on s390x currently, so if @CyrilBrulebois could give the PR a shot, that’d be great! Thanks. |
In addition to the hopefully easy 32-bit issue (#209), I'm wondering whether big endian systems might be entirely busted. That's hard to say for sure since s390x is the only one big endian system available on the https://ci.debian.net/ infrastructure…
I'll just quote one occurrence:
In
!
lines, see how byte pairs are swapped. There are many more occurrences of this issue.Here's an apparently different issue, but maybe that's the same reason (with the length being misread due to swapped bytes):
and another one (might also be due to swapped bytes):
There's a final issue that looks like bytes are getting stashed in the wrong direction, and not just swapped:
The full log is available at: https://ci.debian.net/data/autopkgtest/testing/s390x/g/golang-github-google-nftables/29113914/log.gz and I'm attaching it for reference.
golang-github-google-nftables_s390x_29113914.log
The text was updated successfully, but these errors were encountered: