Closed Bug 1420115 Opened 2 years ago Closed 2 years ago

assert(ABINonArgReg0 != WasmTlsReg, "by constraint") fails

Categories

(Core :: JavaScript Engine: JIT, defect, P3)

Other
Unspecified
defect

Tracking

()

RESOLVED FIXED
mozilla59
Tracking Status
firefox59 --- fixed

People

(Reporter: dan, Assigned: lth)

References

Details

Attachments

(1 file)

Our CI shows that a change made between November 15 and November 21 broke non-JIT arches (seen on ppc64, ppc64le and s390x). I can see other issues with JIT in the builds preceding the November 15th, but build from November 13th was green for s390x (it failed on ppc64/ppc64le due bug #1416170)

...
/usr/bin/g++ -o Unified_cpp_js_src17.o -c -I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/obj-powerpc64le-unknown-linux-gnu/dist/system_wrappers -include /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/config/gcc_hidden.h -DNDEBUG=1 -DTRIMMED=1 -DENABLE_BINARYDATA -DENABLE_SIMD -DENABLE_WASM_THREAD_OPS -DJS_CACHEIR_SPEW -DENABLE_SHARED_ARRAY_BUFFER -DEXPORT_JS_API -DJS_HAS_CTYPES '-DDLL_PREFIX="lib"' '-DDLL_SUFFIX=".so"' -DMOZ_HAS_MOZGLUE -I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/js/src -I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/obj-powerpc64le-unknown-linux-gnu/js/src -I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/obj-powerpc64le-unknown-linux-gnu/dist/include -I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/obj-powerpc64le-unknown-linux-gnu/dist/include/nspr -fPIC -DMOZILLA_CLIENT -include /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/obj-powerpc64le-unknown-linux-gnu/js/src/js-confdefs.h -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wall -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wwrite-strings -Wno-invalid-offsetof -Wc++14-compat -Wc++1z-compat -Wduplicated-cond -Wimplicit-fallthrough -Wno-error=maybe-uninitialized -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wformat -Wformat-overflow=2 -Wno-noexcept-type -fno-sized-deallocation -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-rtti -fno-exceptions -fno-math-errno -pthread -pipe -g -freorder-blocks -O3 -fno-omit-frame-pointer -Wno-shadow -Werror=format -fno-strict-aliasing  -MD -MP -MF .deps/Unified_cpp_js_src17.o.pp   /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/obj-powerpc64le-unknown-linux-gnu/js/src/Unified_cpp_js_src17.cpp
In file included from /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/obj-powerpc64le-unknown-linux-gnu/js/src/Unified_cpp_js_src17.cpp:2:0:
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/js/src/jit/MacroAssembler.cpp: In member function ‘void js::jit::MacroAssembler::wasmCallImport(const js::wasm::CallSiteDesc&, const js::wasm::CalleeDesc&)’:
/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/js/src/jit/MacroAssembler.cpp:2940:5: error: static assertion failed: by constraint
     static_assert(ABINonArgReg0 != WasmTlsReg, "by constraint");
     ^~~~~~~~~~~~~
gmake[4]: *** [/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/config/rules.mk:1030: Unified_cpp_js_src17.o] Error 1
gmake[4]: Leaving directory '/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/obj-powerpc64le-unknown-linux-gnu/js/src'
gmake[3]: *** [/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/config/recurse.mk:73: js/src/target] Error 2
...
Yes, the definition of those registers in jit/MacroAssembler-none.h conflict with that assert.

The appropriate fix here is probably to #ifndef JS_CODEGEN_NONE that assert in MacroAssembler.cpp, since it is inappropriate in the no-jit case.  Or to turn it into a non-static assert, though that is less appealing.
Mozilla folk, we really need to get a 'none' build back on CI.  While not having it on CI lets us ignore this case and just charge ahead, not having it is causing us and all tier-3 platforms regular pain elsewhere.
If having access to ppc64 and/or ppc64le machines running Fedora would help you, let me know.
It actually reproduces locally here (x64 linux) if I disable ion when I configure.  We just don't test these builds much.
I'll fix it today.
Assignee: nobody → lhansen
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
Dan, can you verify that this patch fixes your problem?
Attachment #8931328 - Flags: feedback?(dan)
Duplicate of this bug: 1419749
Priority: -- → P3
(In reply to Lars T Hansen [:lth] from comment #6)
> Created attachment 8931328 [details] [diff] [review]
> bug1420115-fix-none-build.patch
> 
> Dan, can you verify that this patch fixes your problem?

yes, it does fix the problem, also I can't see any further issues in js/ subtree
Pushed by lhansen@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/72fd7816dd77
Avoid a static_assert with JS_CODEGEN_NONE. f=dan_horak, r=me
Attachment #8931328 - Flags: feedback?(dan)
https://hg.mozilla.org/mozilla-central/rev/72fd7816dd77
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
You need to log in before you can comment on or make changes to this bug.