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.