| Summary: | WebAssembly version of Google Earth fails to run on iPad Pro | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Kenneth Russell <kbr> |
| Component: | WebAssembly | Assignee: | Nobody <webkit-unassigned> |
| Status: | NEW --- | ||
| Severity: | Major | CC: | alonzakai, dino, dschuff, fpizlo, keith_miller, mark.lam, saam, webkit-bug-importer, ysuzuki |
| Priority: | P1 | Keywords: | InRadar |
| Version: | WebKit Local Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
|
Description
Kenneth Russell
2021-08-02 18:45:14 PDT
I can reproduce missing tiles on https://earth.google.com/static/wasm/9.141.0.0/ on an iPad Pro 3 running iOS 15 beta. Thanks for the report Kenneth! Is it possible/easy to create a copy of the site where the `ReadVarInt` function (or just a copy of it) is exported out of the wasm module to JS? That should help us figure out which function it is in the module by tracking it backwards from the export name. It would also be interesting to know if LLVM is inlining that function anywhere, you can disable that by adding `__attribute__((__noinline__))` to the declaration of ReadVarInt. It might be possible to spin a new binary, I think we're looking into that. But also I took a look at the symbols from the production binary (9.141.0.0), and I believe that ReadVarInt function is inlined into the function at index 7067 (indirectly via several layers, it appears; it's unfortunately quite a large function). A tool such as Wabt's wasm-objdump will give you the disassembly, and I assume JSC also tracks the function index for error reporting, etc. So if you have the ability to restrict just that function to a lower tier or something, it might be one way to check whether there are any differences in behavior. Ok, updated builds have been made: Before the crash: https://ipad-dot-earthfoody.appspot.com/ With the crash in iPad: https://ipad2-dot-earthfoody.appspot.com/ Those builds call a JS import "Z" which does a console.log saying "mymarker". There are two calls to that import, the first right before the relevant code and the second after. So those should indicate the relevant region. Sorry, the links I posted are not available externally, which I was not aware of. I'll attach the wasm files. Even gzipped they are too large to be attached here, sorry. Here is a drive link: https://drive.google.com/drive/u/1/folders/1SjC7biOWbR6WKeLQdUeL3kXEEHnk4IWz First is the working one, second is the crashing one. The earth3.wasm.gz file there is with noinline as requested earlier. Great, thanks for the links Alon! Much appreciated. (Btw, the no inlining build resolves the issue with ReadVarInt (missing tiles)) Hi WebKit folks, is any more information needed in order to diagnose this compilation bug? We're happy to gather and provide it if so. |