Comment 47 for bug 1711337

Revision history for this message
Chituc Georgian (dianaxxyyzz) wrote :

They at chromium say they use clang when they cross compile chromium .And they had exactly same problem like firefox have ,when they build chromium native using gcc .
You can read a irc log :

--------------------
[16:17:16] <msanchez> This has been puzzling us for a few weeks already because we can't get that crash when we cross compile chromium, but only when running a version built natively in an arm7 machine
[16:18:55] <lizeb> Does gdb tell you which instruction is causing trouble? It should
[16:19:36] <msanchez> the only differences we could spot are that in the native build we pass use_sysroot=false and is_clang=false (we build with gcc 4.9), while in the cross-build we pass is_clang=true and use_sysroot=true
[16:19:54] <msanchez> #0 0xb629b9e6 in _sk_xor__vfp4 () from /usr/lib/chromium-browser/libskia.so
[16:20:00] <msanchez> is that what you mean?
[16:20:17] <msanchez> sorry, I'm not deep in ARM-internals, feel free to ask anything even if it sounds dumb :)
[16:21:05] <lizeb> try "disas 0xb629b9e6,0xb629b100"
[16:21:27] <lizeb> it will give you the assembly at these addresses
[16:21:49] <lizeb> since the issue is "illegal instruction", it might be that the instruction executed isn't supported by your target
[16:22:08] <msanchez> that makes sense
[16:22:12] * msanchez boots up the ARM device
[16:22:34] <msanchez> At the moment my theories were pointing to some compiler-specific thing
[16:22:49] <msanchez> because of the difference between using clang (cross-build) vs gcc 4.9 (native build)
[16:23:30] <lizeb> It's likely that different compiler will generate different instructions, especially if for some reason they don't get the same flags
[16:24:15] <msanchez> so I was not that off-track. Just wild guessing :)
[16:33:58] <ricea> I think the function you're crashing in comes from here: https://cs.chromium.org/codesearch/f/chromium/src/third_party/skia/src/jumper/SkJumper_generated.S
[16:47:39] <lizeb> So line 684 in your dump maps to _sk_xor__vfp4:
[16:47:47] <lizeb> in the file linked by ricea
[16:48:33] <lizeb> The problem is that the address on which you crash is not an actual instruction address...
[16:49:40] <msanchez> oops! I see
[16:49:52] <msanchez> yeah, it's like in between instructions
[16:50:10] <lizeb> This is not thumb code, so instructions are 4 bytes long
[16:51:15] <msanchez> not sure if it's related, but fwiw this is building with target_cpu="arm" arm_float_abi="hard" arm_use_neon=true arm_use_thumb=true
[16:56:29] <lizeb> I don't think we've ever built chrome on android with GCC 6 as Android doesn't support it, AFAIK. And we now use clang.
--------------