wasm jit-tests failing with OOM on some ARM64 hardware
Categories
(Core :: JavaScript: WebAssembly, enhancement, P1)
Tracking
()
Tracking | Status | |
---|---|---|
firefox66 | --- | fixed |
People
(Reporter: lth, Assigned: lth)
Details
(Whiteboard: [arm64:m3])
Attachments
(2 files)
5.95 KB,
patch
|
Details | Diff | Splinter Review | |
6.07 KB,
patch
|
luke
:
review+
|
Details | Diff | Splinter Review |
Comment 1•7 years ago
|
||
Assignee | ||
Comment 2•7 years ago
|
||
Assignee | ||
Comment 3•7 years ago
|
||
Assignee | ||
Comment 4•7 years ago
|
||
Comment 5•7 years ago
|
||
Assignee | ||
Comment 6•7 years ago
|
||
Assignee | ||
Comment 7•7 years ago
|
||
Assignee | ||
Comment 8•7 years ago
|
||
Assignee | ||
Comment 9•7 years ago
|
||
Assignee | ||
Comment 10•7 years ago
|
||
Assignee | ||
Comment 11•7 years ago
|
||
Assignee | ||
Comment 12•7 years ago
|
||
Assignee | ||
Comment 13•7 years ago
|
||
Comment 14•7 years ago
|
||
Comment 15•7 years ago
|
||
Assignee | ||
Comment 16•7 years ago
|
||
Assignee | ||
Comment 17•7 years ago
|
||
Comment 18•7 years ago
|
||
Comment 19•7 years ago
|
||
![]() |
||
Comment 20•7 years ago
|
||
Comment 21•7 years ago
|
||
(In reply to Lars T Hansen [:lth] from comment #17)
It doesn't look like there are any tests being run on win10-aarch64 on
integration, though, at least ./mach try fuzzy does not have anything
plausible (even trying various patterns), nor do i see anything on
taskcluster for normal CI testing.Bob/Chris, any idea how I might go about doing a jit-test run on win-aarch64
hardware without having a system locally? I can probably synthesize
something to be run in a browser if we can find a volunteer to test...
I don't think win-aarch64 is built or tested in automation yet. I'm not involved with the win-aarch64 project, so I don't know much more.
I recommend asking :froydnj or someone in the #arm64 Slack channel.
Comment 22•7 years ago
|
||
Assignee | ||
Comment 23•7 years ago
|
||
Nathan + David, some questions cf comment 17:
- Are you able to run jit-tests locally on a Win+ARM64 device (js shell test)? If so, can you try to run
jit-test/tests/wasm/memory.js
to see if it OOMs? - If not, can you try to figure out from probing the system or from asking people you know or in other ways how much virtual address space each process actually gets on Win-on-ARM64?
- Do we know the pagesize for these devices?
- If all else fails, get back to me and I will attempt to construct a test that we might run in a browser to figure this out
Comment 24•7 years ago
|
||
bugherder |
![]() |
||
Comment 25•7 years ago
|
||
- Are you able to run jit-tests locally on a Win+ARM64 device (js shell
test)? If so, can you try to runjit-test/tests/wasm/memory.js
to see if
it OOMs?
$ jit_test.py --tbpl .../js.exe wasm\memory.js
[8|0|0|0] 100% ======================================================>| 3.3s
PASSED ALL
- Do we know the pagesize for these devices?
Here's the struct that js::gc::InitMemorySubsystem() receives from GetSystemInfo(). 4k pages, 64k allocation granularity, 47-bit pointers.
js!_SYSTEM_INFO
+0x000 dwOemId : 0xc
+0x000 wProcessorArchitecture : 0xc
+0x002 wReserved : 0
+0x004 dwPageSize : 0x1000
+0x008 lpMinimumApplicationAddress : 0x0000000000010000 Void +0x010 lpMaximumApplicationAddress : 0x00007fff
fffeffff Void
+0x018 dwActiveProcessorMask : 0xff
+0x020 dwNumberOfProcessors : 8
+0x024 dwProcessorType : 0
+0x028 dwAllocationGranularity : 0x10000
+0x02c wProcessorLevel : 0x803
+0x02e wProcessorRevision : 0x70c
![]() |
||
Comment 26•7 years ago
|
||
Looks like dmajor took care of this one (thanks!).
Assignee | ||
Comment 27•7 years ago
|
||
Thanks indeed! I think we'll assume we're good on Windows until we learn otherwise through other channels.
Comment 28•7 years ago
|
||
(In reply to David Major [:dmajor] from comment #25)
Here's the struct that js::gc::InitMemorySubsystem() receives from GetSystemInfo(). 4k pages, 64k allocation granularity, 47-bit pointers.
Interesting, so that's identical to x64. Assuming the struct isn't lying, that must mean they use 4 translation tables and have 48-bit addresses internally but simply don't use the most significant bit. It might be interesting to use the logic at [1] and see if it's actually telling the truth, though there's certainly no harm in taking Windows at its word so long as the reported value isn't larger than the actual value. Something for a rainy day when we have Windows ARM64 testing in automation maybe.
[1] https://hg.mozilla.org/mozilla-central/file/e4ac2508e8ed/js/src/gc/Memory.cpp#l376
Description
•