-
Notifications
You must be signed in to change notification settings - Fork 2.4k
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
cargo crashes with illegal instruction under .OPENSSL_cpuid_setup on big-endian ppc64 #6320
Comments
In the past this commonly has to do with codegen where the C compiler isn't configured right and is emitting instructions that are "too new". Can you confirm though that the fault happens because of an instruction that shouldn't be generated? If so, do you know the flag we need to pass to C to not generate it? |
This is also happening when installing rustup.rs on powerpc64 gentoo linux. |
Here's a stack trace:
|
According to this closed debian bug report, this is working as designed: Apparently, a SIGILL is normal for this cpu feature detection routine. Therefore, the calling program should be prepared to ignore this signal. |
There's supposedly a workaround that skips the call to
but had the same SIGILL problem. $ openssl version Maybe this feature isn't in this version of OpenSSL that rustup/cargo was built with? |
Went back through older versions of rustup-init and 1.0.0 is the only one that works without an illegal instruction on powerpc64. |
The 2018-06-30 tools seem to run ok but there's no way to install them except manually because rustup 1.0.0 can't understand the new package format and newer versions of rustup won't run. I really think this is a rustup problem at this point, not a cargo problem. |
Also crashes on powerpc64le, with slightly different stack trace, but also coming from openssl https://gist.github.com/q66/7c7dcde1a7ea057be706c51c4700a373 the first version to do so is 1.31 (persists in nightly), it worked fine on 1.30.1 |
I downloaded 1.24.1, 1.30.0, and 1.31.0 and found that 1.24.1 and 1.30.0 run fine and 1.31.0 crashes in OPENSSL_cpuid_setup(). So I think cargo was being built correctly until 1.31.0. Rustup on the other hand has been built incorrectly since 1.0.0 on powerpc64.
|
yeah, that is pretty consistent with LE, just different place in openssl. I can also confirm that self-built cargo 0.32 runs fine. |
also, it's definitely not that I'm missing some instruction, this is a modern POWER9 box and that's as new as it gets. |
The linked issue #6472 has some insight on what exactly is a problem. Namely:
|
Cargo powerpc64 and powerpc64le are seeing `SIGILL` crashes in openssl, which was found to be a linking problem, fixed by newer binutils. See <rust-lang#57345 (comment)> For powerpc64 we're using crosstool-ng, which doesn't offer a newer binutils version, but we can just compile it separately. On powerpc64le we're already building binutils. Both are now updated to binutils 2.32. Closes rust-lang/cargo#6320 Closes rust-lang#57345 Closes rust-lang/rustup#1620
[CI] Update binutils for powerpc64 and powerpc64le Cargo powerpc64 and powerpc64le are seeing `SIGILL` crashes in openssl, which was found to be a linking problem, fixed by newer binutils. See <rust-lang#57345 (comment)> For powerpc64 we're using crosstool-ng, which doesn't offer a newer binutils version, but we can just compile it separately. On powerpc64le we're already building binutils. Both are now updated to binutils 2.32. Closes rust-lang/cargo#6320 Closes rust-lang#57345 Closes rust-lang/rustup#1620
[CI] Update binutils for powerpc64 and powerpc64le Cargo powerpc64 and powerpc64le are seeing `SIGILL` crashes in openssl, which was found to be a linking problem, fixed by newer binutils. See <rust-lang#57345 (comment)> For powerpc64 we're using crosstool-ng, which doesn't offer a newer binutils version, but we can just compile it separately. On powerpc64le we're already building binutils. Both are now updated to binutils 2.32. Closes rust-lang/cargo#6320 Closes rust-lang#57345 Closes rust-lang/rustup#1620 r? @alexcrichton
[CI] Update binutils for powerpc64 and powerpc64le Cargo powerpc64 and powerpc64le are seeing `SIGILL` crashes in openssl, which was found to be a linking problem, fixed by newer binutils. See <rust-lang#57345 (comment)> For powerpc64 we're using crosstool-ng, which doesn't offer a newer binutils version, but we can just compile it separately. On powerpc64le we're already building binutils. Both are now updated to binutils 2.32. Closes rust-lang/cargo#6320 Closes rust-lang#57345 Closes rust-lang/rustup#1620 r? @alexcrichton
[CI] Update binutils for powerpc64 and powerpc64le Cargo powerpc64 and powerpc64le are seeing `SIGILL` crashes in openssl, which was found to be a linking problem, fixed by newer binutils. See <rust-lang#57345 (comment)> For powerpc64 we're using crosstool-ng, which doesn't offer a newer binutils version, but we can just compile it separately. On powerpc64le we're already building binutils. Both are now updated to binutils 2.32. Closes rust-lang/cargo#6320 Closes rust-lang#57345 Closes rust-lang/rustup#1620 r? @alexcrichton
Problem
Running cargo on Linux on big-endian ppc64 does not work at all, because cargo immediately crashes with illegal instruction. The crashing stack frame does not show a readable name but the next one says
.OPENSSL_cpuid_setup ()
.Steps
cargo --version
Possible Solution(s)
Is there a way to get cargo to use rustls instead of OpenSSL?
Notes
Output of
cargo version
:Can't run it, but
rustc --version
says:rustc 1.32.0-nightly (6f93e93af 2018-11-14)
The text was updated successfully, but these errors were encountered: