Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.

Bug 1633565

Summary: rust crashes on __float128 when building FF
Product: [Fedora] Fedora Reporter: Dan Horák <dan>
Component: gccAssignee: Jakub Jelinek <jakub>
Status: CLOSED CURRENTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 28CC: 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 Flags
full build log none

Description Dan Horák 2018-09-27 09:57:46 UTC
rust crashes when build upstream Firefox sources on some ___float128 stuff

...
   Compiling audioipc-client v0.4.0 (file:///home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/media/audioipc/client)
   Compiling audioipc-server v0.2.3 (file:///home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/media/audioipc/server)
   Compiling style_traits v0.0.1 (file:///home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/servo/components/style_traits)
   Compiling style v0.0.1 (file:///home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/servo/components/style)
error: failed to run custom build command for `style v0.0.1 (file:///home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/servo/components/style)`
process didn't exit successfully: `/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/toolkit/library/release/build/style-b929d392377ab1f6/build-script-build` (exit code: 101)
--- stdout
cargo:rerun-if-changed=build.rs
cargo:out_dir=/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/toolkit/library/powerpc64le-unknown-linux-gnu/release/build/style-b6deb3992531ce3d/out
cargo:rerun-if-changed=properties/Mako-0.9.1.zip
cargo:rerun-if-changed=properties/build.py
cargo:rerun-if-changed=properties/cascade.rs
cargo:rerun-if-changed=properties/computed_value_flags.rs
cargo:rerun-if-changed=properties/data.py
cargo:rerun-if-changed=properties/declaration_block.rs
cargo:rerun-if-changed=properties/gecko.mako.rs
cargo:rerun-if-changed=properties/helpers.mako.rs
cargo:rerun-if-changed=properties/helpers/animated_properties.mako.rs
cargo:rerun-if-changed=properties/longhands/background.mako.rs
cargo:rerun-if-changed=properties/longhands/border.mako.rs
cargo:rerun-if-changed=properties/longhands/box.mako.rs
cargo:rerun-if-changed=properties/longhands/color.mako.rs
cargo:rerun-if-changed=properties/longhands/column.mako.rs
cargo:rerun-if-changed=properties/longhands/counters.mako.rs
cargo:rerun-if-changed=properties/longhands/effects.mako.rs
cargo:rerun-if-changed=properties/longhands/font.mako.rs
cargo:rerun-if-changed=properties/longhands/inherited_box.mako.rs
cargo:rerun-if-changed=properties/longhands/inherited_svg.mako.rs
cargo:rerun-if-changed=properties/longhands/inherited_table.mako.rs
cargo:rerun-if-changed=properties/longhands/inherited_text.mako.rs
cargo:rerun-if-changed=properties/longhands/inherited_ui.mako.rs
cargo:rerun-if-changed=properties/longhands/list.mako.rs
cargo:rerun-if-changed=properties/longhands/margin.mako.rs
cargo:rerun-if-changed=properties/longhands/outline.mako.rs
cargo:rerun-if-changed=properties/longhands/padding.mako.rs
cargo:rerun-if-changed=properties/longhands/position.mako.rs
cargo:rerun-if-changed=properties/longhands/svg.mako.rs
cargo:rerun-if-changed=properties/longhands/table.mako.rs
cargo:rerun-if-changed=properties/longhands/text.mako.rs
cargo:rerun-if-changed=properties/longhands/ui.mako.rs
cargo:rerun-if-changed=properties/longhands/xul.mako.rs
cargo:rerun-if-changed=properties/properties.html.mako
cargo:rerun-if-changed=properties/properties.mako.rs
cargo:rerun-if-changed=properties/shorthands/background.mako.rs
cargo:rerun-if-changed=properties/shorthands/border.mako.rs
cargo:rerun-if-changed=properties/shorthands/box.mako.rs
cargo:rerun-if-changed=properties/shorthands/column.mako.rs
cargo:rerun-if-changed=properties/shorthands/font.mako.rs
cargo:rerun-if-changed=properties/shorthands/inherited_svg.mako.rs
cargo:rerun-if-changed=properties/shorthands/inherited_text.mako.rs
cargo:rerun-if-changed=properties/shorthands/list.mako.rs
cargo:rerun-if-changed=properties/shorthands/margin.mako.rs
cargo:rerun-if-changed=properties/shorthands/outline.mako.rs
cargo:rerun-if-changed=properties/shorthands/padding.mako.rs
cargo:rerun-if-changed=properties/shorthands/position.mako.rs
cargo:rerun-if-changed=properties/shorthands/svg.mako.rs
cargo:rerun-if-changed=properties/shorthands/text.mako.rs
cargo:rerun-if-changed=build_gecko.rs
cargo:rerun-if-changed=/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/servo/components/style/gecko/regen_atoms.py
cargo:rerun-if-changed=/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/layout/style/ServoBindings.toml
cargo:rerun-if-changed=/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/layout/style/bindgen.toml
cargo:rerun-if-changed=/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/nsGkAtomList.h
cargo:rerun-if-changed=/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/servo/components/style/gecko/pseudo_element_definition.mako.rs
--- stderr
/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
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:135:1: warning: replacement function 'operator new' cannot be declared 'inline' [-Winline-new-delete]
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:142:21: warning: replacement function 'operator new' cannot be declared 'inline' [-Winline-new-delete]
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:148:21: warning: replacement function 'operator new[]' cannot be declared 'inline' [-Winline-new-delete]
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:154:21: warning: replacement function 'operator new[]' cannot be declared 'inline' [-Winline-new-delete]
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:160:21: warning: replacement function 'operator delete' cannot be declared 'inline' [-Winline-new-delete]
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:166:21: warning: replacement function 'operator delete' cannot be declared 'inline' [-Winline-new-delete]
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:172:21: warning: replacement function 'operator delete[]' cannot be declared 'inline' [-Winline-new-delete]
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:178:21: warning: replacement function 'operator delete[]' cannot be declared 'inline' [-Winline-new-delete]
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/js/Proxy.h:214:16: warning: offset of on non-standard-layout type 'js::BaseProxyHandler' [-Winvalid-offsetof]
/usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/type_traits:335:39: error: __float128 is not supported on this target, err: true
/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, err: true
/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, err: true
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:135:1: warning: replacement function 'operator new' cannot be declared 'inline' [-Winline-new-delete], err: false
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:142:21: warning: replacement function 'operator new' cannot be declared 'inline' [-Winline-new-delete], err: false
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:148:21: warning: replacement function 'operator new[]' cannot be declared 'inline' [-Winline-new-delete], err: false
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:154:21: warning: replacement function 'operator new[]' cannot be declared 'inline' [-Winline-new-delete], err: false
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:160:21: warning: replacement function 'operator delete' cannot be declared 'inline' [-Winline-new-delete], err: false
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:166:21: warning: replacement function 'operator delete' cannot be declared 'inline' [-Winline-new-delete], err: false
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:172:21: warning: replacement function 'operator delete[]' cannot be declared 'inline' [-Winline-new-delete], err: false
...


Version-Release number of selected component (if applicable):
rust-1.29.0-1.fc28.ppc64le
llvm-6.0.1-1.fc28.ppc64le

Comment 1 Dan Horák 2018-09-27 10:01:12 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.

Comment 2 Dan Horák 2018-09-27 10:15:47 UTC
Created attachment 1487706 [details]
full build log

Comment 3 Josh Stone 2018-09-27 19:13:58 UTC
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.

Comment 4 Josh Stone 2018-09-27 20:03:17 UTC
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.

Comment 5 Tom Stellard 2018-09-27 21:48:57 UTC
I think the solution is to backport this upstream libstdc++ patch: https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=263084

Comment 6 Dan Horák 2018-09-28 07:51:43 UTC
It has been even backported, but the updated gcc >= 8.2.1-2 hasn't made it to the updates (nor updates-testing) yet.