New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 592198 link

Starred by 4 users

Issue metadata

Status: Archived
Owner: ----
Closed: Jan 10
Cc:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 1
Type: Bug-Regression



Sign in to add a comment

Chromium build by gcc 5.2+ for ARM segfaults on start

Project Member Reported by amstan@chromium.org, Mar 5 2016

Issue description

Ever since Arch Linux ARM upgraded their compilers to gcc 5.2 (in July) they had no luck getting chromium to work.

As soon as it's launched it crashes with a segfault.

Ways to reproduce:
Get a raspberry pi, install Arch Linux on it, install chromium from the repository, note it segfault.

Here's the best debug information that was acquired: https://bpaste.net/show/264749c1fa0a

I heard steev had similar issues with gentoo on arm64, but he got it working by using --no-sandbox.

Please take a look, there has been no chromium built since M43. It's the only thing that will work on my chromebook flip and I have the google main page yelling at me now to update.
 

Comment 1 Deleted

You can build a debug version of chrome (by changing the line in the PKGBUILD from 'ninja -C out/Release' to 'ninja -C out/Debug') and enable logging by following the instructions here: http://www.chromium.org/for-testers/enable-logging.

If you attach the generated chrome_debug.log file to this bug, it'll help narrow things down much faster.
We've been trying to do a debug build, but I don't believe there is an ARMv7 device in existence with enough RAM to successfully link that.  I'm open to any ideas on how to get around that, or any alternate means of debugging you might have.

Regarding the aarch64 runtime issues, this has been resolved by patching in two changes:
https://codereview.chromium.org/1617763002
https://codereview.chromium.org/1613883002
You can do a release build with -DDCHECK_ALWAYS_ON=1 in your GYP_DEFINES.  This won't give you debug symbols but you might be able to get a nice error message in your logs.


Attached chrome_debug.log after building with -Ddcheck_always_on=1 and running with --enable-logging --v=1.
chrome_debug.log
10.1 KB View Download
Well I was hoping to get a stack trace or some sort of error message in the log but there's nothing useful in there.  A debug build is probably your best bet.  Maybe you can cross-compile on a more powerful machine?  Gentoo has really good cross-compilation support.
I can get something going on Arch.  Do you have any real-life usage figures for RAM with a debug build so I can find an adequate machine?
You definitely need a 64-bit cpu.  I don't know how much RAM the build takes but I think 8GB should be safe.

You can try doing a component build so that rather than linking a giant binary, you get a bunch of .so files: http://www.chromium.org/developers/how-tos/component-build

It also looks like chrome also keeps a sysroot for cross-compiling: https://chromium.googlesource.com/chromium/src/+/master/docs/linux_chromium_arm.md
Thanks, I'll see if a native component build is successful (didn't know about that one), but I'll also get a cross-compile environment set up. I should hopefully have something to report within a day or two.
A full debug build is still in the works, but maybe you have some insight into this link error in a component debug build?  Building with use_system_icu=1 and use_mojo=0.

[17593/19976] SOLINK lib/libcontent.so
FAILED: if [ ! -e lib/libcontent.so -o ! -e lib/libcontent.so.TOC ]; then c++ -shared -Wl,-O1,--sort-common,--as-needed,-z,relro -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -pthread -Wl,-z,noexecstack -fPIC -Wl,--disable-new-dtags -L. -Wl,-uIsHeapProfilerRunning,-uProfilerStart -Wl,-u_Z21InitialMallocHook_NewPKvj,-u_Z22InitialMallocHook_MMapPKvS0_jiiix,-u_Z22InitialMallocHook_SbrkPKvi -Wl,-u_Z21InitialMallocHook_NewPKvm,-u_Z22InitialMallocHook_MMapPKvS0_miiil,-u_Z22InitialMallocHook_SbrkPKvl -Wl,-u_ZN15HeapLeakChecker12IgnoreObjectEPKv,-u_ZN15HeapLeakChecker14UnIgnoreObjectEPKv -Wl,--export-dynamic -pthread -o lib/libcontent.so -Wl,-soname=libcontent.so @lib/libcontent.so.rsp && { readelf -d lib/libcontent.so | grep SONAME ; nm -gD -f p lib/libcontent.so | cut -f1-2 -d' '; } > lib/libcontent.so.TOC; else c++ -shared -Wl,-O1,--sort-common,--as-needed,-z,relro -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -pthread -Wl,-z,noexecstack -fPIC -Wl,--disable-new-dtags -L. -Wl,-uIsHeapProfilerRunning,-uProfilerStart -Wl,-u_Z21InitialMallocHook_NewPKvj,-u_Z22InitialMallocHook_MMapPKvS0_jiiix,-u_Z22InitialMallocHook_SbrkPKvi -Wl,-u_Z21InitialMallocHook_NewPKvm,-u_Z22InitialMallocHook_MMapPKvS0_miiil,-u_Z22InitialMallocHook_SbrkPKvl -Wl,-u_ZN15HeapLeakChecker12IgnoreObjectEPKv,-u_ZN15HeapLeakChecker14UnIgnoreObjectEPKv -Wl,--export-dynamic -pthread -o lib/libcontent.so -Wl,-soname=libcontent.so @lib/libcontent.so.rsp && { readelf -d lib/libcontent.so | grep SONAME ; nm -gD -f p lib/libcontent.so | cut -f1-2 -d' '; } > lib/libcontent.so.tmp && if ! cmp -s lib/libcontent.so.tmp lib/libcontent.so.TOC; then mv lib/libcontent.so.tmp lib/libcontent.so.TOC ; fi; fi
obj/mojo/shell/public/cpp/mojo_application_base.initialize_base_and_icu.o: In function `InitializeBase':
/build/chromium/src/chromium-49.0.2623.75/out/Debug/../../mojo/shell/public/cpp/initialize_base_and_icu.cc:40: undefined reference to `base::i18n::InitializeICUFromRawMemory(unsigned char const*)'
collect2: error: ld returned 1 exit status
This issue appears to be solved now by building with GCC 6.1.1.  Chromium 50.0.2661.102 is running correctly when built with this toolchain.
Status: Archived (was: Untriaged)
Archiving issues older than 2 years with no owner or component.

Sign in to add a comment