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
Generated binaries fail with SIGILL using splitbuild and Vibe.d (amd64) #2280
Comments
I made it generate a - probably not incredibly useful - backtrace:
|
Could you have a look at the failing instruction ( |
I fetched the binary from Travis, and it runs fine here - so I guess the problem is that LDC is generating code from some more recent CPU architecture than available on Travis... |
Interesting - we've had issues where too aggressive defaults were used even without |
What is the exact command line issued by Meson? We've had issues with SSE 2 (or AVX) being used in the initialization code before, but SSE 2 should be supported on all x86_64 CPUs and AVX needs to be enabled explicitly. |
Which command-line? ;-) There are multiple. Interestingly, one binary, General flags passed to LDC for compiling in this case are |
Okay, sorry, I forgot that the error was in the library, not the binary... I now have a pair of library/binary which allows me to reproduce the issue on my machine here as well:
|
Here are the binaries to play around with (no debuginfo, sorry) |
Well I guess you're hitting one of the |
That's a weird error for an assert... The very same compilation works with all DMD versions, so I wonder what's wrong here... It also works on my machine here without problems (LDC 1.2, LLVM 3.9). |
[IIRC, |
Yep, I suspect the linker version to play at least a part in this. |
* Modularize Meson build definition from 0.7.x branch * ci: Test building with Meson * ci: Do not test versions This needs an update, as the suffix (~rc, etc.) isn't allowed for library versioning, so we need to deal with that separately. * meson: Skip tests when compiling with broken LDC/DMD This works around LDC bug ldc-developers/ldc#2280 for now, and skips compilation with a broken DMD version.
I've met the same problem with this simple benchmark vibe test: https://github.com/nuald/simple-web-benchmark/tree/master/d Compiled with dub build emmits these flags: Tried with:
disass output from the gdb:
|
@tchaloupka: Could you please test whether it's working without |
@kinke: Sure. Tried that just getting the verbose output from combined build generated with dub and removed the switch. It indeed worked without it. |
Thx. What linker are you using? If it's bfd, can you give gold a try via |
Yes it is bfd. Tested it with the flag and with |
Alright, so you're seeing #2278. |
Thx and sorry for the noise :) |
@ximion: I checked the dependencies of |
Are you really sure about that? The Debian archive tolls warn about these things, and the package depends on the LDC phobos package, as expected. The LDC-Phobos Debian package also ships with both the shared and static libraries, while only dependencies on the shared lib are allowed in the archive.
Everything looks exactly like it should look. |
I'm talking about the vibe library in the archive you posted, compiled with an official release package on Travis, not about the official Debian lib you are apparently referring to:
[Related to 'Interestingly, this only happens on Travis with the prebuilt binaries.'] |
Hey! Another weird issue :-)
I want to build Vibe with Meson for Debian packaging. The Meson buildsystem does split-builds by default.
The build finishes successfully, but the generated binaries fail with SIGILL:
9495 Illegal instruction (core dumped) ./core/vibe-test_core
The full build log can be found at: https://travis-ci.org/ximion/vibe.d/jobs/266145926
(for LDC 1.3.0, a (working) dub build happens before).
Interestingly, this only happens on Travis with the prebuilt binaries. When I try to reproduce this locally with my LDC from the Debian repositories, I get working binaries:
Reference PR for updated Meson in Vibe: vibe-d/vibe.d#1894
So, I guess something went wrong in LLVM (the Travis packages are built with 4.0), or the Travis binaries have some other issue.
All builds happened on amd64.
The text was updated successfully, but these errors were encountered: