On Friday, March 12, 2021 at 6:20:41 AM UTC-5, grze...@gmail.com wrote: > tcam...@mozilla.com schrieb am Freitag, 12. März 2021 um 02:12:11 UTC+1: > > On Thursday, March 11, 2021 at 1:15:42 PM UTC-5, grze...@gmail.com wrote: > > > Carsten Grzemba schrieb am Donnerstag, 11. März 2021 um 14:25:41 UTC+1: > > > > Lars Hansen schrieb am Donnerstag, 11. März 2021 um 13:25:45 UTC+1: > > > > > If you run jit-tests with the options -f --no-xdr it will print out > > > > > the > > > > > command lines you need to use to run the failed tests individually. > > > > > > > > > > --lrs > > > > > On Thu, Mar 11, 2021 at 12:05 PM Carsten Grzemba <grze...@gmail.com> > > > > > wrote: > > > > > > > > > > > I attempt to build Firefox for Openindiana (Illumos). Some of the > > > > > > tests > > > > > > are failing: > > > > > > Result summary: > > > > > > Passed: 30561 > > > > > > Failed: 480 > > > > > > > > > > > > How can I check what the reason for a failed check is? > > > > > > > > > > > > In the log I see for example: > > > > > > TEST-PASS | js/src/jit-test/tests/wasm/timeout/debug-interrupt-2.js > > > > > > | > > > > > > Success (code 6, args "--ion-eager --ion-offthread-compile=off > > > > > > --more-compartments") [1.0 s] > > > > > > #1 module successfully instantiated: PASS. > > > > > > #2 A wast module that must return a particular value.: PASS. > > > > > > #3 A wast module that must trap at runtime.: PASS. > > > > > > #4 A wast module that must trap at runtime.: PASS. > > > > > > #5 A wast module that must trap at runtime.: PASS. > > > > > > #6 A wast module that must trap at runtime.: PASS. > > > > > > Exit code: -11 > > > > > > FAIL - wasm/spec/memory_grow.wast.js > > > > > > TEST-UNEXPECTED-FAIL | > > > > > > js/src/jit-test/tests/wasm/spec/memory_grow.wast.js > > > > > > | Unknown (code -11, args "--ion-eager --ion-offthread-compile=off > > > > > > --ion-check-range-analysis --ion-extra-checks --no-sse3 > > > > > > --no-threads") > > > > > > [20.0 s] > > > > > > INFO exit-status : -11 > > > > > > INFO timed-out : False > > > > > > INFO stdout > #1 module successfully instantiated: PASS. > > > > > > INFO stdout > #2 A wast module that must return a particular > > > > > > value.: PASS. > > > > > > INFO stdout > #3 A wast module that must trap at runtime.: PASS. > > > > > > INFO stdout > #4 A wast module that must trap at runtime.: PASS. > > > > > > INFO stdout > #5 A wast module that must trap at runtime.: PASS. > > > > > > INFO stdout > #6 A wast module that must trap at runtime.: PASS. > > > > > > > > > > > > TEST-PASS | js/src/jit-test/tests/wasm/timeout/1.js | Success (code > > > > > > 6, > > > > > > args "--wasm-compiler=baseline") [1.2 s] > > > > > > > > > > > > How can I run a test standalone, perhapse with a little bit more > > > > > > informations? > > > > > > _______________________________________________ > > > > > > dev-platform mailing list > > > > > > dev-pl...@lists.mozilla.org > > > > > > https://lists.mozilla.org/listinfo/dev-platform > > > > > > > > > > cool! > > > > thats is what Im looking for: > > > > > > > > grzemba@oibuild:~/oi-userland/components/web/firefox/firefox-68.12.0/js/src/jit-test$ > > > > > > > > /ws/grzemba/oi-userland/components/web/firefox/build_opt/amd64/dist/bin/js > > > > -f > > > > /ws/grzemba/oi-userland/components/web/firefox/firefox-68.12.0/js/src/jit-test/lib/prologue.js > > > > -e 'const platform='"'"'sunos5'"'"'' -e 'const > > > > libdir='"'"'/ws/grzemba/oi-userland/components/web/firefox/firefox-68.12.0/js/src/jit-test/lib/'"'"'' > > > > -e 'const > > > > scriptdir='"'"'/ws/grzemba/oi-userland/components/web/firefox/firefox-68.12.0/js/src/jit-test/tests/asm.js/'"'"'' > > > > -e 'if ((!this.SharedArrayBuffer || !isAsmJSCompilationAvailable())) > > > > quit(59)' --module-load-path > > > > /ws/grzemba/oi-userland/components/web/firefox/firefox-68.12.0/js/src/jit-test/modules/ > > > > -f > > > > /ws/grzemba/oi-userland/components/web/firefox/firefox-68.12.0/js/src/jit-test/tests/asm.js/testBug1057248.js > > > > > > > > Segmentation Fault (core dumped) > > > > > > > > core 'core' of 4573: > > > > /ws/grzemba/oi-userland/components/web/firefox/build_opt/amd64/dist/bin > > > > --------------------- thread# 1 / lwp# 1 --------------------- > > > > 0000000000d51211 > > > > js::InternalBarrierMethods<JS::Value>::preBarrier(JS::Value const&) () > > > > + 5b3 > > > > 0000000000b43671 js::SharedArrayBufferObject::dropRawBuffer() () + 33 > > > > 0000000000b436eb js::SharedArrayBufferObject::Finalize(js::FreeOp*, > > > > JSObject*) () + 51 > > > > 0000000000d3b700 bool FinalizeTypedArenas<JSObject>(js::FreeOp*, > > > > js::gc::Arena**, js::gc::SortedArenaList&, js::gc::AllocKind, > > > > js::SliceBudget&, js::gc::ArenaLists::KeepArenasEnum) () + 211 > > > > 0000000000d3bb98 FinalizeArenas(js::FreeOp*, js::gc::Arena**, > > > > js::gc::SortedArenaList&, js::gc::AllocKind, js::SliceBudget&, > > > > js::gc::ArenaLists::KeepArenasEnum) () + 187 > > > > 0000000000d3f124 js::gc::ArenaLists::backgroundFinalize(js::FreeOp*, > > > > js::gc::Arena*, js::gc::Arena**) () + b0 > > > > 0000000000d3f39a > > > > js::gc::GCRuntime::sweepBackgroundThings(js::gc::ZoneList&, > > > > js::LifoAlloc&) () + ba > > > > 0000000000d3f6b2 > > > > js::gc::GCRuntime::sweepFromBackgroundThread(js::AutoLockHelperThreadState&) > > > > () + 124 > > > > 0000000000d3fa13 js::gc::BackgroundSweepTask::run() () + 47 > > > > 0000000000d3fa50 > > > > js::GCParallelTaskHelper<js::gc::BackgroundSweepTask>::runTaskTyped(js::GCParallelTask*) > > > > () + 9 > > > > 00000000009f0ebf js::GCParallelTask::runTask() () + 7 > > > > 00000000009f3f90 js::GCParallelTask::runFromMainThread(JSRuntime*) () + > > > > 20 > > > > 00000000009f403b > > > > js::GCParallelTask::joinAndRunFromMainThread(JSRuntime*) () + 5b > > > > 0000000000d2da40 > > > > js::gc::GCRuntime::queueZonesAndStartBackgroundSweep(js::gc::ZoneList&) > > > > () + 9c > > > > 0000000000d2de3a js::gc::GCRuntime::endSweepingSweepGroup(js::FreeOp*, > > > > js::SliceBudget&) () + 1e4 > > > > 0000000000d275c0 sweepaction::SweepActionCall<js::FreeOp*, > > > > js::SliceBudget&>::run(js::gc::GCRuntime*, js::FreeOp*, > > > > js::SliceBudget&) () + 2c > > > > 0000000000d28fdf sweepaction::SweepActionSequence<js::gc::GCRuntime*, > > > > js::FreeOp*, js::SliceBudget&>::run(js::gc::GCRuntime*, js::FreeOp*, > > > > js::SliceBudget&) () + 39 > > > > 0000000000d2e940 > > > > sweepaction::SweepActionRepeatFor<js::gc::SweepGroupsIter, JSRuntime*, > > > > js::gc::GCRuntime*, js::FreeOp*, > > > > js::SliceBudget&>::run(js::gc::GCRuntime*, js::FreeOp*, > > > > js::SliceBudget&) () + 3e > > > > 0000000000d5ea4f > > > > js::gc::GCRuntime::performSweepActions(js::SliceBudget&) () + 67 > > > > 0000000000d5ee53 js::gc::GCRuntime::incrementalSlice(js::SliceBudget&, > > > > JS::GCReason, js::gc::AutoGCSession&) () + 3ad > > > > 0000000000d5f37e js::gc::GCRuntime::gcCycle(bool, js::SliceBudget, > > > > JS::GCReason) () + 1fc > > > > 0000000000d5f83c js::gc::GCRuntime::collect(bool, js::SliceBudget, > > > > JS::GCReason) () + b2 > > > > 0000000000d5fa6d js::gc::GCRuntime::gc(JSGCInvocationKind, > > > > JS::GCReason) () + 4f > > > > 0000000000aaa4cd JSRuntime::destroyRuntime() () + 13d > > > > 0000000000a1be11 js::DestroyContext(JSContext*) () + a9 > > > > 0000000000c14e5f JS_DestroyContext(JSContext*) () + 9 > > > > 00000000008560e6 main () + 21fb > > > > 0000000000836427 _start_crt () + 87 > > > > 0000000000836388 _start () + 18 > > > For the failed tests I get core dumps initiated by MOZ_ASSERT(isDouble()) > > > in setPrivate(void*) mostly, with stack traces similar like this: > > > --------------------- thread# 1 / lwp# 1 --------------------- > > > 0000000001c85879 JS::Value::setPrivate(void*) () + af > > > 0000000001edda15 JS::PrivateValue(void*) () + 3d > > > 0000000001ee9320 > > > js::ArrayBufferObject::setDataPointer(js::ArrayBufferObject::BufferContents) > > > () + 32 > > > > > > I assume the core is the wanted behaviour of the MOZ_ASSERT. > > > How can I investigate was is going wrong here? > > > I do the test with Firefox 68.1.20 esr. What I can found on > > > https://bugzilla.mozilla.org is related to newer versions of FF and the > > > failed test for bugs very old. > > > > > > Many Thanks > > This sounds like you are hitting Bug 1568564 where the encoding of > > `PrivateValue` type acted up on certain compiler configurations in Firefox > > 68 ESR. We did backport a workaround to Firefox 68.2.0+ that added an > > optional --enable-unaligned-private-values compilation flag. If this flag > > is available in your version you should give it a try. > > > > The issue in that bug is that the code expects a certain alignment that was > > stricter than some compiler / OS pairs guaranteed. > The comment in setPrivate mentions: ptr must be a valid user-mode pointer, > with the top 16 bits clear. > But if I get the assertion, than the ptr is 0xfffffbffef120fb0 > Where do the pointer come from? In the sense of pointer the address is ok, it > should be an mmap'ed area, but why expects setPrivate whith the top 16 bits > clear?
The JS::Value representation uses a technique called "NaN-boxing" to encoding pointers as special versions of floating-point NaN values. In this approach, there is a limited number of bits available for storing pointer values. To work around this we take advantage of the fact that 64-bit processors generally do not use 64-bits of actual address space yet. See this wikipedia diagram for more info: https://en.wikipedia.org/wiki/X86-64#Virtual_address_space_details . In that diagram there is an "upper" and "lower" half of memory. While it is possible to sign-extend the 48-bit number to 64-bit to get the expected value, we find that the main operating systems we support don't use the "upper" region for user-space pointers so we avoid performance overhead of this 48->64 sign-extension. If this failure mostly experienced in these WASM SharedArrayBuffer cases, you may be able to modify where the mmap is called. I don't know what the appropriate way on your OS to get a page that is in the "lower" half of memory. https://searchfox.org/mozilla-central/rev/491c8096b5dfdb328b2135895062e16e1e36d708/mfbt/TaggedAnonymousMemory.cpp#85 If you are investigating possible mmap solutions, it may be helpful to look at the "scattershot" allocation that the GC uses: https://searchfox.org/mozilla-central/rev/491c8096b5dfdb328b2135895062e16e1e36d708/js/src/gc/Memory.cpp#467-487 _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform