Bug 2260867
Summary: | [Mass Rebuild] Possible aarch64 codegen issues since GCC 14 | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | František Zatloukal <fzatlouk> |
Component: | gcc | Assignee: | Jakub Jelinek <jakub> |
Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
Severity: | unspecified | Docs Contact: | |
Priority: | unspecified | ||
Version: | 40 | CC: | dmalcolm, fweimer, jakub, jlaw, jwakely, mcermak, mpolacek, msebor, nickc, nixuser, sipoyare, stransky, yselkowi |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | If docs needed, set a value | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2024-06-12 15:56: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: |
Description
František Zatloukal
2024-01-29 14:50:25 UTC
Is there any easy way to run just a single failing test? (In reply to Jakub Jelinek from comment #1) > Is there any easy way to run just a single failing test? Yeah, not a very straightforward way, but there is. If you are in a buildroot of the mozjs, in "/builddir/build/BUILD/firefox-115.6.0/js/src" directory, you can add tests you want to run to a text file, separated by newline char. So, eg. for running just the "non262/global/parseInt-default-to-decimal.js": echo "non262/global/parseInt-default-to-decimal.js" >> tests.txt python3 tests/jstests.py -s -t 2400 --file tests.txt ../../js/src/dist/bin/js115 Will do the trick. Seems the bug only reproduces with LTO, so as a workaround, disabling lto on aarch64 for mozjs* should work. Will try to bisect linking with some objects built in LTO tree and others in non-LTO tree, but it will take a while. I'm afraid I'm stuck. I've managed to reproduce the bug with cd /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build g++ -flto -o ../../../dist/bin/js116 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-sized-deallocation -fno-aligned-new -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fPIC -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -pthread -pipe -gdwarf-4 -freorder-blocks -O3 -fomit-frame-pointer -funwind-tables /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/shell/Unified_cpp_js_src_shell0.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/shell/Unified_cpp_js_src_shell1.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/memory/build/Unified_cpp_memory_build0.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/memory/mozalloc/Unified_cpp_memory_mozalloc0.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mozglue/interposers/Unified_cpp_mozglue_interposers0.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mozglue/baseprofiler/Unified_cpp_mozglue_baseprofiler0.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mozglue/misc/AutoProfilerLabel.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mozglue/misc/AwakeTimeStamp.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mozglue/misc/ConditionVariable_posix.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mozglue/misc/MmapFaultHandler.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mozglue/misc/Mutex_posix.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mozglue/misc/Printf.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mozglue/misc/RWLock_posix.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mozglue/misc/SIMD.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mozglue/misc/StackWalk.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mozglue/misc/TimeStamp.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mozglue/misc/TimeStamp_posix.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mozglue/misc/Uptime.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mozglue/misc/Decimal.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mfbt/lz4.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mfbt/lz4file.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mfbt/lz4frame.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mfbt/lz4hc.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mfbt/xxhash.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mfbt/Unified_cpp_mfbt0.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/mfbt/Unified_cpp_mfbt1.o -lpthread -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -Wl,--build-id=sha1 -Wl,-z,noexecstack -Wl,-z,text -Wl,-z,relro -Wl,-z,nocopyreloc -Wl,-Bsymbolic-functions -Wl,--build-id=sha1 -fstack-protector-strong -Wl,-rpath-link,/builddir/build/BUILD/firefox-115.6.0/js/src/dist/bin -Wl,-rpath-link,/usr/lib /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_gc0.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_gc1.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_gc2.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_gc3.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_gc4.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_irregexp0.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_irregexp1.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_irregexp2.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_jit0.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_jit1.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_jit10.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_jit11.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_jit12.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_jit13.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_jit14.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_jit15.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_jit16.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_jit2.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_jit3.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_jit4.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_jit5.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_jit6.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_jit7.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_jit8.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_jit9.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_util0.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src_util1.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src0.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src1.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src10.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src11.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src12.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src13.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src14.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src15.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src16.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src17.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src18.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src19.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src2.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src20.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src21.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src22.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src23.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src24.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src25.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src3.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src4.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src5.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src6.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src7.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src8.o /builddir/build/BUILD/firefox-115.6.0/js/src/js/src/build/objects/Unified_cpp_js_src9.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/DoubleToString.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Interpreter.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Parser.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/ProfilingStack.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/RegExp.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/RegExpNativeMacroAssembler.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/StoreBuffer.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/e_acos.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/e_acosh.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/e_asin.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/e_atan2.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/e_atanh.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/e_cosh.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/e_exp.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/e_hypot.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/e_log.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/e_log10.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/e_log2.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/e_pow.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/e_sinh.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/jsmath.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/k_cos.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/k_exp.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/k_rem_pio2.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/k_sin.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/k_tan.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/regexp-ast.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/regexp-compiler.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_asinh.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_atan.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_cbrt.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_ceil.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_ceilf.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_cos.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_expm1.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_fabs.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_floor.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_floorf.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_log1p.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_nearbyint.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_rint.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_rintf.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_scalbn.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_sin.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_tan.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_tanh.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_trunc.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/s_truncf.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_intl_components0.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_intl_components1.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_intl_components2.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_intl_components3.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_intl_components4.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Utility.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_js_src_debugger0.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_js_src_debugger1.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_js_src_frontend0.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_js_src_frontend1.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_js_src_frontend2.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_js_src_frontend3.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_js_src_frontend4.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_js_src_frontend5.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_js_src_frontend6.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_js_src_frontend7.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_js_src_wasm0.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_js_src_wasm1.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_js_src_wasm2.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_js_src_wasm3.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_js_src_wasm4.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/js/src/build/objects/Unified_cpp_js_src_wasm5.o /builddir/build/BUILD/firefox-115.6.0-nolto/js/src/aarch64-unknown-linux-gnu/release/libjsrust.a -pie -lm -licui18n -licuuc -licudata -lz -lm -ldl -lreadline cd /builddir/build/BUILD/firefox-115.6.0/js/src; /builddir/build/BUILD/firefox-115.6.0/js/src/dist/bin/js116 -f /builddir/build/BUILD/firefox-115.6.0/js/src/tests/shell.js -f /builddir/build/BUILD/firefox-115.6.0/js/src/tests/non262/shell.js -f /builddir/build/BUILD/firefox-115.6.0/js/src/tests/non262/global/shell.js -f /builddir/build/BUILD/firefox-115.6.0/js/src/tests/non262/global/parseInt-default-to-decimal.js where the /builddir/build/BUILD/firefox-115.6.0-nolto directory contains build directory from successful non-LTO build and /builddir/build/BUILD/firefox-115.6.0*/js/src/js/src/build/objects/ contains unpacked /builddir/build/BUILD/firefox-115.6.0*/js/src/js/src/build/libjs_static.a libraries. This means the objects from -nolto aren't possibly miscompiled, those are the same as used in the working non-LTO build, while the other objects are used during LTO link. But when I was trying to add -nolto to further objects, linking fails with references to various .hidden symbols not being actually defined, dunno if the JS interpreter relies on implicit template instantiations from other TUs or what. Anyway, because of that I can't narrow it down to something manageable (2-3 compilation units build with LTO). Any idea what function might actually misbehave? Given that I know next to nothing about firefox internals, I think it would be easier for somebody who knows the code to check that under a debugger where things go wrong, or do parallel debugging between non-LTO working code and LTO non-working code. The above should show which objects aren't problematic, which one is from the rest is unclear. This bug appears to have been reported against 'rawhide' during the Fedora Linux 40 development cycle. Changing version to 40. Missing symbols during LTO may be related to https://bugzilla.mozilla.org/show_bug.cgi?id=1516803 (lto-partitions whatever it means). This is working now just fine, closing, it was resolved somewhere in between gcc-0:14.0.1-0.4.fc40.aarch64 and gcc-14.1.1-5.fc40.aarch64. |