When firefox is built with ROOT= and PORTAGE_CONFIGROOT=$ROOT where $ROOT has -march=... and the build process is on a different machine which is binary incompatible to the machine on which $ROOT is suppose to the transferred, this error occurs. It seems in the build process, firefox executes some binaries which was build using ROOT's -march=.... which results in -- traps: TaskCon~ller #5[195099] trap invalid opcode ip:7f6128f38686 sp:7f611a6c27d0 error:0 in libxul.so[3737686,7f6127ff6000+8723000] Reproducible: Always Expected Results: Binaries which are built as a part of the toolchain must be compiled with generic CFLAGS Portage 3.0.66.1 (python 3.12.7-final-0, !../custom-profiles-gentoo/profiles/mypc/, gcc-14, glibc-2.40-r5, 6.10.7-gentoo-gentoo-dist x86_64) ================================================================= System uname: Linux-6.10.7-gentoo-gentoo-dist-x86_64-AMD_Ryzen_5_PRO_2600_Six-Core_Processor-with-glibc2.40 KiB Mem: 16300448 total, 1433848 free KiB Swap: 2097148 total, 2002776 free Head commit of repository oubliette: 460b5c9c1f6e20a175187dca9dbe942f784146fa Timestamp of repository gentoo: Wed, 20 Nov 2024 00:45:00 +0000 sh bash 5.2_p37 ld GNU ld (Gentoo 2.42 p6) 2.42.0 ccache version 4.10.2 [enabled] app-misc/pax-utils: 1.3.7::gentoo app-shells/bash: 5.2_p37::gentoo dev-build/autoconf: 2.13-r8::gentoo, 2.72-r1::gentoo dev-build/automake: 1.16.5-r2::gentoo dev-build/cmake: 3.30.5::gentoo dev-build/libtool: 2.4.7-r4::gentoo dev-build/make: 4.4.1-r100::gentoo dev-build/meson: 1.5.2::gentoo dev-java/java-config: 2.3.4::gentoo dev-lang/perl: 5.40.0::gentoo dev-lang/python: 3.11.10_p1::gentoo, 3.12.7_p1::gentoo, 3.13.0::gentoo dev-lang/rust: 1.81.0-r100::gentoo dev-lang/rust-bin: 1.81.0-r100::gentoo dev-util/ccache: 4.10.2-r1::gentoo sys-apps/baselayout: 2.17::gentoo sys-apps/openrc: 0.54.2::gentoo sys-apps/sandbox: 2.39::gentoo sys-apps/systemd: 256.7::gentoo sys-devel/binutils: 2.42-r2::gentoo sys-devel/binutils-config: 5.5.2::gentoo sys-devel/clang: 15.0.7-r3::gentoo, 18.1.8::gentoo sys-devel/gcc: 14.2.1_p20241116::gentoo sys-devel/gcc-config: 2.11::gentoo sys-devel/lld: 15.0.7::gentoo, 18.1.8::gentoo sys-devel/llvm: 15.0.7-r3::gentoo, 18.1.8-r1::gentoo sys-kernel/linux-headers: 6.6-r1::gentoo (virtual/os-headers) sys-libs/glibc: 2.40-r5::gentoo sys-libs/libselinux: 3.7-r1::gentoo Repositories: custom-profiles location: /etc/custom-profiles-gentoo masters: gentoo volatile: True oubliette location: /var/db/repos/oubliette sync-type: git sync-uri: https://github.com/nabbi/oubliette-overlay masters: gentoo priority: 50 volatile: False gentoo location: /usr/portage sync-type: git sync-uri: https://github.com/gentoo-mirror/gentoo priority: 100 volatile: True ACCEPT_KEYWORDS="amd64" ACCEPT_LICENSE="*" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-march=alderlake -mabm -mno-cldemote -mno-kl -mno-pconfig -mno-sgx -mno-widekl -mshstk --param=l1-cache-line-size=64 --param=l1-cache-size=48 --param=l2-cache-size=12288 -fomit-frame-pointer -floop-interchange -floop-strip-mine -floop-block -fgraphite-identity -ftree-loop-distribution -O3 -pipe -flto=1 -fuse-linker-plugin -ffat-lto-objects" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /usr/share/config /usr/share/gnupg/qualified.txt /var/bind" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php8.2/ext-active/ /etc/php/cgi-php8.2/ext-active/ /etc/php/cli-php8.2/ext-active/ /etc/php/fpm-php8.2/ext-active/ /etc/php/phpdbg-php8.2/ext-active/ /etc/revdep-rebuild /etc/sandbox.d" CXXFLAGS="-march=alderlake -mabm -mno-cldemote -mno-kl -mno-pconfig -mno-sgx -mno-widekl -mshstk --param=l1-cache-line-size=64 --param=l1-cache-size=48 --param=l2-cache-size=12288 -fomit-frame-pointer -floop-interchange -floop-strip-mine -floop-block -fgraphite-identity -ftree-loop-distribution -O3 -pipe -flto=1 -fuse-linker-plugin -ffat-lto-objects" DISTDIR="/var/cache/distfiles/" EMERGE_DEFAULT_OPTS="--with-bdeps=n --complete-graph --binpkg-respect-use=y --binpkg-changed-deps=n --changed-deps=n --rebuild-if-new-slot=y --load-average 8" ENV_UNSET="ABI_X86 ACCEPT_LICENSE APACHE2_MODULES APACHE2_MPMS CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GDK_PIXBUF_MODULE_FILE GOBIN GOPATH L10N NGINX_MODULES_HTTP PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT SANE_BACKENDS VIDEO_CARDS XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR XDG_STATE_HOME" FCFLAGS="-O2 -pipe" FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance buildpkg-live candy ccache config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox pkgdir-index-trusted preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync" FFLAGS="-O2 -pipe" GENTOO_MIRRORS="https://mirror.leaseweb.com/gentoo/ http://mirror.csclub.uwaterloo.ca/gentoo-distfiles/" LANG="en_US.utf8" LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs" LEX="flex" MAKEOPTS="-j12" PKGDIR="/mnt/systmp/packages" PORTAGE_CONFIGROOT="/usr/x86_64-mypc-linux-gnu/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git" PORTAGE_TMPDIR="/tmp" SHELL="/bin/bash" USE="a52 aac acpi adns alsa alt-svc amd64 amrenc asm asyncns atm avif bluetooth branding bzip2 cairo cet crypt custom-cflags dav1d dbus declarative dri dts dv dvbpsi editorconfig eglfs enca encode exif faad fdk ffmpeg flac fontconfig gif gles2 gles2-only glslang gmp gstreamer gui heif http2 iconv idn ipv6 jit jpeg jpeg2k jpegxl kde kf6compat lame libdrm libinput libnotify libsamplerate libtirpc lto mad man matroska mikmod minimal mmap modplug mp3 mp4 mpeg mprisi multilib natspec ncurses networkmanager offensive ogg opencl opengl openmp opus orc pam pcre pdf pgo plasma png policykit ppds pulseaudio qml qt6 quicktime raw readline seccomp smp sound spell ssl startup-notification strip svg svt-av1 symlink system-png systemd taglib tcmalloc test-rust theora threads tiff tls-compression truetype twolame uchardet udev udisks unicode upower usb v4l vaapi verify-sig vorbis vpx vulkan wallpaper-metadata wayland webp widgets wxwidgets x264 x265 xft xvid zlib" ABI_X86="64" ADA_TARGET="gcc_12" APACHE2_MODULES="unixd authn_core authz_core authz_host access_compat alias auth_basic authn_file log_config mime log_config proxy proxy_http rewrite proxy_balancer lbmethod_bybusyness lbmethod_byrequests lbmethod_bytraffic lbmethod_heartbeat slotmem_shm env cache dir cgid headers proxy_connect http2 allowmethods auth_digest actions" APACHE2_MPMS="event" CALLIGRA_FEATURES="karbon sheets words" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt rdrand sha sse sse2 sse3 sse4_1 sse4_2 ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax navcom oceanserver oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 tsip tripmate tnt ublox" GRUB_PLATFORMS="pc efi-64" GUILE_TARGETS="3-0" INPUT_DEVICES="libinput" KERNEL="linux" L10N="en-US en" LCD_DEVICES="bayrad cfontz glk hd44780 lb216 lcdm001 mtxorb text" LIBREOFFICE_EXTENSIONS="nlpsolver pdfimport" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" NGINX_MODULES_HTTP="access fastcgi gzip gzip_static limit_req rewrite upstream_check proxy" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php8-2" POSTGRES_TARGETS="postgres16" PYTHON_SINGLE_TARGET="python3_12" PYTHON_TARGETS="python3_11 python3_12" QEMU_SOFTMMU_TARGETS="x86_64" RUBY_TARGETS="ruby32" SANE_BACKENDS="hp" VIDEO_CARDS="intel" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipp2p iface geoip fuzzy condition tarpit sysrq proto logmark ipmark dhcpmac delude chaos account" Unset: ADDR2LINE, AR, ARFLAGS, AS, ASFLAGS, CC, CCLD, CONFIG_SHELL, CPP, CPPFLAGS, CTARGET, CXX, CXXFILT, ELFEDIT, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, INSTALL_MASK, LC_ALL, LD, LFLAGS, LIBTOOL, LINGUAS, MAKE, MAKEFLAGS, NM, OBJCOPY, OBJDUMP, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PYTHONPATH, RANLIB, READELF, RUSTFLAGS, SIZE, STRINGS, STRIP, YACC, YFLAGS
I think I've mentioned this on your bugs before, but maybe not: I'll note that at least for some build systems, unless it can "see" you're doing cross with e.g. different CHOST (some even actually check uname or something, very icky), they may take different paths and do things like this.
Created attachment 911637 [details] Failed build for www-client/firefox-128.4.0-r1 (with ROOT=)
(In reply to Sam James from comment #1) > I think I've mentioned this on your bugs before, but maybe not: I'll note > that at least for some build systems, unless it can "see" you're doing cross > with e.g. different CHOST (some even actually check uname or something, very > icky), they may take different paths and do things like this. Only crossdev is changing the CHOST. The middle part which must be user configurable has changed. If I use the middle part as 'pc' -- then it'll overwrite the toolchain in my host machine. So I'm not sure what to do here (even as per the manuals) Note both the ROOT and build host are x86-64
My point was really just that ROOT= on the same architecture often means build systems don't realise they're doing cross and do silly things, and you may run into other instances like this. Doesn't mean it's wrong to try, just that some assumptions like this might be a pain to try fix in custom build systems.
Ok. So I'll try changing the CHOST too along with ROOT (with the one which crossdev sets) and see what happens.
Ok, that failed immediately, but do you suggest I change the CHOST to something which crossdev would otherwise set and follow https://www.gentoo.org/doc/en/change-chost.xml?
If you are changing the middle part, then the CHOST inside the ROOT is already different to the one outside, and you need to see why Mach thinks that it's okay to do what it's doing (does it have a cross-compilation mode at all?)
Currently it's the same. I'll do that and check after rebuilding world.
(In reply to dE from comment #6) > Ok, that failed immediately, but do you suggest I change the CHOST to > something which crossdev would otherwise set and follow > https://www.gentoo.org/doc/en/change-chost.xml? I just changed that from the environment variable and the build failed. So I guess I need to follow https://www.gentoo.org/doc/en/change-chost.xml.
Created attachment 911791 [details] Failed build log with cross-toolchain. In this build log (unlike the previous one) you can see -- checking whether cross compiling... yes But STILL the build is resulting in the same issue (invalid opcode). Cross compilation was achieved by setting the CHOST != CBUILD.
OP seems to be running PGO which tries to execute the newer binaries on the older instruction set CPU: https://forums.gentoo.org/viewtopic-t-1170684.html ``` USE="...pgo ..." ```
(In reply to Georgi from comment #11) Thanks, that's a very helpful observation.
Thanks, definitely. Isn't this just impossible to fix then? We could add a die if PGO and non-empty ROOT, I guess, but..
(In reply to Sam James from comment #13) > Thanks, definitely. Isn't this just impossible to fix then? We could add a > die if PGO and non-empty ROOT, I guess, but.. I don't think that would be good. Someone might be building for the same arch and CPU and PGO could actually run fine unless I understand it wrong. Maybe only a warning. This becomes too much for portage/ebuilds to handle I think plus Gentoo is for advanced users. This matter goes well beyond the responsibilities of a package manager and into the competencies of the user. Best Regards, Georgi