Source: chromium
Version: 155.0.8059.39-1
Severity: important
Tags: ftbfs patch

chromium has not built on armhf since 150.0.7871.181-1 on July. 
The nine builds attempted since have all failed, each after 17 
to 19 hours of buildd time, always at the final link of chrome:

ld.lld-22: error: failed to open ./chrome: Cannot allocate memory

https://buildd.debian.org/status/logs.php?pkg=chromium&arch=armhf


Cause
-----

The final link does not fit in a 32-bit address space. 
Measured by bisecting RLIMIT_AS on a replayed link of 
v8_context_snapshot_generator, a target that
carries about half of chrome's input:

needs                                                3.25 GB
available to an AArch32 process on an arm64 kernel   about 4 GiB

Peak RSS for the same link is 2.30 GB. Watching RSS is misleading here:
address space runs about 40% higher, and it is the address space that
the allocation fails on.

What I have tried and did not work:

 ld.bfd 2.47 --no-keep-memory --reduce-memory-overheads  6.04 GB RSS
 ld.bfd 2.47 plain                                       6.69 GB RSS
 ld.gold 2.44                 11.32 GB RSS, then an internal error
 mold                         maps every input and the output
 optimize_for_size=true       object files grow 19%
 --icf=all                    shrinks only the output, the small term
 -fno-function-sections       saves 97 bytes per input section, costs more
 staged partial linking       higher than the direct link

mold's author reached the same conclusion for a program this size in
https://github.com/rui314/mold/issues/1701 : cross building on a 
64-bit host is the only option.

We tried this approach previously:
Cross hosting the linker, an arm64 lld or mold against armhf objects.
it does work:

https://salsa.debian.org/chromium-team/chromium/-/merge_requests/44
https://salsa.debian.org/chromium-team/chromium/-/merge_requests/45

Both need a build dependency from a foreign architecture, 
which wanna-build infrastructure from the buildd team does not suppor.  
That is https://bugs.debian.org/770925 , open since 2014. A patch for it with 
tests is at https://salsa.debian.org/mendezr/wanna-build/-/merge_requests/1 and 
it was declined at the beginning of Octuber 2026.

Hence, a proposal to fix it:
---

Building chrome as a component build on armhf. 
The code then lives in about 540 shared libraries that link one 
at a time, chrome's own link inputs drop from over 2 GB to 569 MB, 
and the largest remaining link is 434 MB.

 https://salsa.debian.org/chromium-team/chromium/-/merge_requests/49

The packages install and the browser runs, although so far I have tested it 
only under qemu-user.

If anyone has armhf hardware, a native check would be welcome.

The merge request needs two patches that are also upstream:

 https://chromium-review.googlesource.com/c/chromium/src/+/8545999
 https://chromium-review.googlesource.com/c/chromium/src/+/8549218

The reasoning and the measurements are in debian/README.armhf in that branch, 
so this does not have to be worked out again.

Again, the MR for this approach is in:
 https://salsa.debian.org/chromium-team/chromium/-/merge_requests/49

Reply via email to