I've just bought an AMD Ryzen 3950X (16 cores, 32 threads) and my Chromium ebuilds fail with the following: ``` In file included from ../../third_party/blink/renderer/core/frame/local_frame_view.h:38, from ../../third_party/blink/renderer/core/display_lock/display_lock_context.h:9, from ../../third_party/blink/renderer/core/layout/layout_object.h:36, from ../../third_party/blink/renderer/core/layout/layout_box_model_object.h:31, from ../../third_party/blink/renderer/core/layout/layout_box.h:31, from ../../third_party/blink/renderer/core/layout/layout_list_marker.h:28, from ../../third_party/blink/renderer/core/layout/layout_list_marker.cc:26: ../../third_party/blink/renderer/core/frame/frame_view.h:23:52: warning: ‘clang::lto_visibility_public’ scoped attribute directive ignored [-Wattributes] 23 | class CORE_EXPORT [[clang::lto_visibility_public]] FrameView | ^~~~~~~~~ In file included from /usr/include/rpc/netdb.h:42, from /usr/include/netdb.h:32, from ../../net/base/sys_addrinfo.h:26, from ../../net/base/ip_endpoint.h:16, from ../../net/url_request/url_request.h:24, from ../../services/network/public/cpp/resource_request.h:19, from ../../services/network/public/cpp/shared_url_loader_factory.h:15, from ../../third_party/blink/public/platform/platform.h:49, from ../../third_party/blink/public/platform/viewport_intersection_state.h:8, from ../../third_party/blink/renderer/core/frame/frame_view.h:9, from ../../third_party/blink/renderer/core/frame/local_frame_view.h:38, from ../../third_party/blink/renderer/core/display_lock/display_lock_context.h:9, from ../../third_party/blink/renderer/core/layout/layout_object.h:36, from ../../third_party/blink/renderer/core/layout/layout_box_model_object.h:31, from ../../third_party/blink/renderer/core/layout/layout_box.h:31, from ../../third_party/blink/renderer/core/layout/layout_list_marker.h:28, from ../../third_party/blink/renderer/core/layout/layout_list_marker.cc:26: ../../net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h: In instantiation of ‘quic::QuicInlinedFrame<DerivedT>::QuicInlinedFrame(quic::QuicFrameType) [with DerivedT = quic::QuicPaddingFrame]’: ../../net/third_party/quiche/src/quic/core/frames/quic_padding_frame.h:20:77: required from here ../../net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h:20:28: warning: offsetof within non-standard-layout type ‘quic::QuicPaddingFrame’ is conditionally-supported [-Winvalid-offsetof] 20 | static_assert(offsetof(DerivedT, type) == 0, | ^ ninja: build stopped: subcommand failed. * ERROR: www-client/chromium-83.0.4103.61::gentoo failed (compile phase): * ninja -v -j32 -l0 -C out/Release v8_context_snapshot_generator failed * * Call stack: * ebuild.sh, line 125: Called src_compile * environment, line 4260: Called eninja '-C' 'out/Release' 'v8_context_snapshot_generator' * environment, line 1943: Called die * The specific snippet of code: * "$@" || die "${nonfatal_args[@]}" "${*} failed" * * If you need support, post the output of `emerge --info '=www-client/chromium-83.0.4103.61::gentoo'`, * the complete build log and the output of `emerge -pqv '=www-client/chromium-83.0.4103.61::gentoo'`. * * MemTotal: 32823584 kB * SwapTotal: 5580008 kB * * The complete build log is located at '/var/tmp/portage/www-client/chromium-83.0.4103.61/temp/build.log.gz'. * The ebuild environment file is located at '/var/tmp/portage/www-client/chromium-83.0.4103.61/temp/environment'. * Working directory: '/var/tmp/portage/www-client/chromium-83.0.4103.61/work/chromium-83.0.4103.61' * S: '/var/tmp/portage/www-client/chromium-83.0.4103.61/work/chromium-83.0.4103.61' * Messages for package www-client/chromium-83.0.4103.61: * ERROR: www-client/chromium-83.0.4103.61::gentoo failed (compile phase): * ninja -v -j32 -l0 -C out/Release v8_context_snapshot_generator failed * * Call stack: * ebuild.sh, line 125: Called src_compile * environment, line 4260: Called eninja '-C' 'out/Release' 'v8_context_snapshot_generator' * environment, line 1943: Called die * The specific snippet of code: * "$@" || die "${nonfatal_args[@]}" "${*} failed" * * If you need support, post the output of `emerge --info '=www-client/chromium-83.0.4103.61::gentoo'`, * the complete build log and the output of `emerge -pqv '=www-client/chromium-83.0.4103.61::gentoo'`. * The complete build log is located at '/var/tmp/portage/www-client/chromium-83.0.4103.61/temp/build.log.gz'. * The ebuild environment file is located at '/var/tmp/portage/www-client/chromium-83.0.4103.61/temp/environment'. * Working directory: '/var/tmp/portage/www-client/chromium-83.0.4103.61/work/chromium-83.0.4103.61' * S: '/var/tmp/portage/www-client/chromium-83.0.4103.61/work/chromium-83.0.4103.61' * * The following package has failed to build, install, or execute postinst: * * (www-client/chromium-83.0.4103.61:0/0::gentoo, ebuild scheduled for merge), Log file: * '/var/tmp/portage/www-client/chromium-83.0.4103.61/temp/build.log.gz' * ``` Notice the `ninja -v -j32 -l0 -C out/Release v8_context_snapshot_generator failed`. I suspect `ninja` is being executed with an improper amount of jobs, which should should be equal to the amount of cores - not threads. Likewise, my make.conf has `EMERGE_DEFAULT_OPTS="${EMERGE_DEFAULT_OPTS} --jobs=16 --load-average=16"`, otherwise my systems freezes when replacing jobs and load average with '32'. Reproducible: Always Steps to Reproduce: 1. Buy a 3950X 2. Compile latest Chromium 3. Cry when it fails to build Actual Results: Please see the description. The complete ouput is too much, but the last few lines should be enough to get the idea, yes? Expected Results: I expected Chromium to build. I'm on Pentoo (Gentoo + Pentoo overlay with pentesting tools), but I don't think that's especially relevant as I'm building Chromium from the Gentoo tree.
Note that MAKEOPTS is how you specify the number of concurrent make jobs to be running at a given time, while `emerge --jobs` is the number of concurrent emerges to run at a time. So, suppose you ran `emerge --jobs=3 firefox chromium libreoffice`, Firefox and Chromium would (try to) compile in parallel (provided no deps were an issue), then LibreOffice would compile once the first one finishes. MAKEOPTS in make.conf defaults (with Portage) to the number of cores on the system, so that's your problem. Try setting this to 16 with MAKEOPTS="-j16". I would recommend you drop your default emerge jobs down because if you had 16 emerges all running 16 jobs, you might quickly run out of RAM. Please let me know if that helps you.
(In reply to Guido Kroon from comment #0) > Please see the description. The complete ouput is too much, but the last few > lines should be enough to get the idea, yes? The part that you posted does not include the actual error, only warnings, but if I had to guess, you are not running out of memory. My setup is similar to yours: 24 core Threadripper, 64G RAM, and I normally do MAKEOPTS="-j48". Chromium-84 compiles fine for me with clang-10, and so you should not be having any trouble with -j32.
(In reply to Sam James (sec padawan) from comment #1) > MAKEOPTS in make.conf defaults (with Portage) to the number of cores on the > system, so that's your problem. Try setting this to 16 with MAKEOPTS="-j16". Thanks for your reply. If I use -j16, I'm throwing away half of my threads. I don't think that would be a good solution, right?
(In reply to Guido Kroon from comment #3) > (In reply to Sam James (sec padawan) from comment #1) > > MAKEOPTS in make.conf defaults (with Portage) to the number of cores on the > > system, so that's your problem. Try setting this to 16 with MAKEOPTS="-j16". > > Thanks for your reply. If I use -j16, I'm throwing away half of my threads. > I don't think that would be a good solution, right? No problem. You can use any -jN value you like, I was just suggesting 16 because it's usually sensible(ish). For bigger packages, a good rule is N/2 where N is your RAM, because jobs may take up to 2GB of RAM each. Trying to find the balance between Portage's --jobs and MAKEOPTS' --jobs/-j is difficult, but --load-average / -l may help you with that too.
(In reply to Sam James (sec padawan) from comment #4) > For bigger packages, a good rule is N/2 where N is your RAM, because jobs > may take up to 2GB of RAM each. Is there a way to set this for specific packages? For example, -j32 for all packages, but -j16 as an override just for Chromium.
(In reply to Guido Kroon from comment #5) > (In reply to Sam James (sec padawan) from comment #4) > > For bigger packages, a good rule is N/2 where N is your RAM, because jobs > > may take up to 2GB of RAM each. > Is there a way to set this for specific packages? For example, -j32 for all > packages, but -j16 as an override just for Chromium. Yep! https://wiki.gentoo.org/wiki//etc/portage/package.env
(In reply to Sam James (sec padawan) from comment #6) > (In reply to Guido Kroon from comment #5) > > (In reply to Sam James (sec padawan) from comment #4) > > > For bigger packages, a good rule is N/2 where N is your RAM, because jobs > > > may take up to 2GB of RAM each. > > Is there a way to set this for specific packages? For example, -j32 for all > > packages, but -j16 as an override just for Chromium. > > Yep! https://wiki.gentoo.org/wiki//etc/portage/package.env Thanks, it seems to works like a charm!
(In reply to cyrillic from comment #2) > My setup is similar to yours: 24 core Threadripper, 64G RAM, and I normally > do MAKEOPTS="-j48". Chromium-84 compiles fine for me with clang-10, and so > you should not be having any trouble with -j32. Thanks for your reply. It my system seems kind of like your system's little brother. I think -j32 doesn't work for me for Chromium because I've "only" got 32G RAM. I think I've managed to work around this by using Sam James' /etc/portage/package.env suggestion.