Bug 1633565
| Summary: | rust crashes on __float128 when building FF | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Dan Horák <dan> | ||||
| Component: | gcc | Assignee: | Jakub Jelinek <jakub> | ||||
| Status: | CLOSED CURRENTRELEASE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||
| Severity: | unspecified | Docs Contact: | |||||
| Priority: | unspecified | ||||||
| Version: | 28 | CC: | airlied, aoliva, dan, davejohansen, dmalcolm, fweimer, hannsj_uhl, igor.raits, jakub, jistone, jwakely, law, mpolacek, msebor, nickc, rust-sig, sbergman, siddharth.kde, TicoTimo, tstellar | ||||
| Target Milestone: | --- | ||||||
| Target Release: | --- | ||||||
| Hardware: | ppc64le | ||||||
| OS: | Linux | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | Doc Type: | If docs needed, set a value | |||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | Environment: | ||||||
| Last Closed: | 2019-02-16 18:13:14 UTC | Type: | Bug | ||||
| Regression: | --- | Mount Type: | --- | ||||
| Documentation: | --- | CRM: | |||||
| Verified Versions: | Category: | --- | |||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||
| Embargoed: | |||||||
| Bug Depends On: | |||||||
| Bug Blocks: | 1071880 | ||||||
| Attachments: |
|
||||||
|
Description
Dan Horák
2018-09-27 09:57:46 UTC
part of the log with the backtrace
...
RawServoCounterStyleRuleVoid { }", "--raw-line", "pub struct RawServoCounterStyleRule(RawServoCounterStyleRuleVoid);", "--whitelist-function", "Servo_.*", "--whitelist-function", "Gecko_.*", "--", "-I", "/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include", "-I", "/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/nspr", "-include", "/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla-config.h", "-x", "c++", "-std=gnu++14", "-fno-sized-deallocation", "-DTRACING=1", "-DIMPL_LIBXUL", "-DMOZ_STYLO_BINDINGS=1", "-DMOZILLA_INTERNAL_API", "-DRUST_BINDGEN", "-DOS_POSIX=1", "-DOS_LINUX=1", "-I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/nspr", "-I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/nss", "-I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/cairo"]', servo/components/style/build_gecko.rs:282:17
stack backtrace:
0: 0x7fffb089f133 - rust_metadata_std_359ae6df43a98cd98957ef461c9ec74c
1: 0x7fffb0866e3b - rust_metadata_std_359ae6df43a98cd98957ef461c9ec74c
2: 0x7fffb085f397 - rust_metadata_std_359ae6df43a98cd98957ef461c9ec74c
3: 0x7fffb085f08b - rust_metadata_std_359ae6df43a98cd98957ef461c9ec74c
4: 0x7fffb085fed7 - std::panicking::rust_panic_with_hook::hce5f786c962c355e
5: 0x7fffb085f8ff - rust_metadata_std_359ae6df43a98cd98957ef461c9ec74c
6: 0x7fffb085f80f - std::panicking::begin_panic_fmt::he46c2d83239cce7a
7: 0x13bde38db - build_script_build::build_gecko::bindings::write_binding_file::h51a5ccd8dc393ab7
8: 0x13bde4f0b - build_script_build::build_gecko::bindings::generate_bindings::h41a5592eb7754268
9: 0x7fffb08b9897 - __rust_maybe_catch_panic
10: 0x13bddaddb - std::panicking::try::hab4cc17f9f205b50
11: 0x13bdc8417 - <F as alloc::boxed::FnBox<A>>::call_box::hd6fb1e7e00676a0b
12: 0x7fffb08aaf8b - rust_metadata_std_359ae6df43a98cd98957ef461c9ec74c
13: 0x7fffb0860c97 - rust_metadata_std_359ae6df43a98cd98957ef461c9ec74c
14: 0x7fffb0a185d3 - start_thread
15: 0x7fffb06a65c7 - clone
/usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/type_traits:335:39: error: __float128 is not supported on this target
/usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/std_abs.h:102:7: error: __float128 is not supported on this target
/usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/std_abs.h:101:3: error: __float128 is not supported on this target
...
Full Firefox build.log is available in our Jenkins.
Created attachment 1487706 [details]
full build log
Does this succeed on F29 or Rawhide? I don't think it's any problem with the rust toolchain itself. The error here is from the build script for servo/components/style, which is trying to generate FFI bindings using the bindgen crate. This is panicking when it encounters the unsupported type in those headers. I believe bindgen uses libclang.so, so __float128 support is probably needed there. I can reproduce this with a simple hello-world and ppc64le clang++. I'm going to reassign to clang, but it may also be a libstdc++ issue.
#include <iostream>
using namespace std;
int main(void)
{
cout << "Hello" << endl;
return 0;
}
Using clang-6.0.1-1.fc28.ppc64le and libstdc++-8.1.1-5.fc28.ppc64le:
$ clang++ hello.cc
In file included from hello.cc:1:
In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/iostream:39:
In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/ostream:38:
In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/ios:39:
In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/exception:144:
In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/nested_exception.h:40:
In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/move.h:55:
/usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/type_traits:335:39: error: __float128 is not supported on this target
struct __is_floating_point_helper<__float128>
^
In file included from hello.cc:1:
In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/iostream:39:
In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/ostream:38:
In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/ios:42:
In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/ios_base.h:41:
In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/locale_classes.h:40:
In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/string:52:
In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/basic_string.h:6391:
In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/ext/string_conversions.h:41:
In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/cstdlib:77:
/usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/std_abs.h:102:7: error: __float128 is not supported on this target
abs(__float128 __x)
^
/usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/std_abs.h:101:3: error: __float128 is not supported on this target
__float128
^
3 errors generated.
I think the solution is to backport this upstream libstdc++ patch: https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=263084 It has been even backported, but the updated gcc >= 8.2.1-2 hasn't made it to the updates (nor updates-testing) yet. |