Skip to content
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

Add CI for s390x-unknown-linux-gnu #392

Merged
merged 1 commit into from
Nov 20, 2020
Merged

Add CI for s390x-unknown-linux-gnu #392

merged 1 commit into from
Nov 20, 2020

Conversation

uweigand
Copy link
Contributor

This adds a Docker-based CI job for s390x-unknown-linux-gnu similar to previous existing ones.

Two interesting comments:

  • I ran into random crashes, which turned out to be caused by issues with handling ld.so.cache in the target ld.so running under qemu. The ld.so.cache file is shared between the host and target ld.so, and is supposedly capable of caching files from multiple architectures in a single file. However, in the default Ubuntu multi-arch setup, unless you install the s390x version of libc (from ports), ld.so.conf will never refer to any s390x libraries in the first place, so the target ld.so will never find any cache entry. That in itself should still be fine, but in some cases the target ld.so will simply crash in that scenario. I haven't found out the exact cause, but it is related to which particular set of libraries happens to be installed on the host ... As a workaround, I'm now simply deleting the ld.so.cache file in the container image.

  • The concurrent-panics.rs test doesn't work because it spawns a second executable, which doesn't use the CARGO_TARGET_..._RUNNER wrapper. I've tried to enable the automatic binfmt_misc based qemu handler, but it looks like this doesn't work in a docker container (at least not on the github installation) since binfmt_misc handlers are shared between the container and the host running the container. As a workaround I'm simply skipping that test on s390x, as is already done (for the same reason) on arm and aarch64.

@alexcrichton
Copy link
Member

Looks great to me, thanks!

Also wow that ld.so.cache issue sounds spooky...

@alexcrichton alexcrichton merged commit 28531b6 into rust-lang:master Nov 20, 2020
@uweigand
Copy link
Contributor Author

Looks great to me, thanks!

Also wow that ld.so.cache issue sounds spooky...

I'm still trying to track down the actual root cause, but it's a bit challenging. In particular because even installing gdb or strace into the container pulls in more libraries, which makes the crash disappear :-)

@uweigand uweigand deleted the s390x-ci branch November 20, 2020 17:16
@uweigand
Copy link
Contributor Author

Looks great to me, thanks!

Also wow that ld.so.cache issue sounds spooky...

Just to follow up on this - the underlying issue has now been fixed in glibc upstream and in the Ubuntu package:
https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1906250

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants