View previous topic :: View next topic |
Author |
Message |
Pipeartist n00b
Joined: 12 Feb 2023 Posts: 12
|
Posted: Sun Oct 22, 2023 5:19 pm Post subject: GNU Iceat 115.3* pgo build fails |
|
|
GNU Icecat-115.3.1 pgo build hangs during profiling phase. I tried Icecat-115.3.0 and it also hangs during profiling phase. The build hangs in both virtx and virtwl build environments. Icecat-102.15.0 pgo builds perfect. GNU Icecat-115.3* non-pgo builds perfect. I tried Firefox-115.3.1:esr pgo build; it builds perfect. I'm using gcc to compile but whether its clang or gcc would be irrelevant with Firefox build succeeding. If I had to guess, I'd say one of the extensions is interfering with the profiling. The 115.3.0 commit doesn't have the extensions updated whereas the 115.3.1 commit has them updated but that appears to be irrelevant. It seems like one of the extensions(prob javascript restrictor) isn't playing nice with Firefox pgo build script. Thoughts anyone? |
|
Back to top |
|
|
Juippisi Developer
Joined: 30 Sep 2005 Posts: 751 Location: /home
|
Posted: Mon Oct 23, 2023 5:16 am Post subject: |
|
|
Are you using an ebuild to build icecat, or doing it manually from source?
Few things I can suggest you try if the build hangs:
1: don't stress your computer while building,
2: use clang.
The profiling part is very I/O heavy and clang splits the profile files into hundreds of smaller files (before combining them) while gcc seems to outright collect them to a big data file. Previously there was a timeout if this task was unsuccessful, and the build would continue, but it's now been patched to just hang indefinitely if the profiling fails. It's a tradeoff for not getting perfect profiling vs. the build hanging - I haven't decided what's the correct choice here yet.
Also if your X (/ graphical) sessions has crashed recently (dmesg) the profiling phase might fail. |
|
Back to top |
|
|
Pipeartist n00b
Joined: 12 Feb 2023 Posts: 12
|
Posted: Wed Oct 25, 2023 1:00 am Post subject: |
|
|
I'm using the ebuilds from src_prepare-overlay to build. I updated the makeicecat and icecat ebuilds to 115.3.1 on my machine in local repo. I tried the build with clang and it still hangs during profiling. I tried firefox-115.3.1:esr and librewolf. Both build perfect with gcc and clang. This looks to be exclusive to GNU Icecat-115*. Hopefully it's fixed in Icecat-115.4.0. I'll know soon enough. |
|
Back to top |
|
|
Pipeartist n00b
Joined: 12 Feb 2023 Posts: 12
|
Posted: Fri Mar 29, 2024 12:27 am Post subject: |
|
|
I think I have a fix for Icecat[pgo] build. I have suspected that the GNU extensions were interfering with the profiling. This had me thinking of 'private browsing mode'. Private browsing mode disables all extensions by default. I enabled 'browser.privatebrowsing.autostart' setting in the profileserver.py file.
Code: | diff --git a/build/pgo/profileserver.py b/build/pgo/profileserver.py
index d544b0a79a..552b4a5548 100755
--- a/build/pgo/profileserver.py
+++ b/build/pgo/profileserver.py
@@ -117,6 +117,7 @@ if __name__ == "__main__":
# interpolate because the formatting code only works for strings,
# and this is a bool pref.
prefs["browser.tabs.remote.autostart"] = True
+ prefs["browser.privatebrowsing.autostart"] = True
profile = IceCatProfile(
profile=profilePath, |
GNU Icecat[pgo] builds successfully with this patch which proves the extensions are causing the pgo build failure. Changing the setting in this file only affects the browser during pgo and doesn't affect any installed files/settings. I benchmarked the browser https://browserbench.org/ without pgo and with pgo to ensure the private browsing mode didn't cause performance regressions. I made minor modifications to https://gitlab.com/src_prepare/src_prepare-overlay Icecat ebuild to enable cross-pgo using Firefox ebuild from https://github.com/12101111/overlay as an example.
Test machine:
- CPU: AMD Ryzen 7 5700X
- GPU: AMD Radeon RX 590 GME (radeonsi, polaris10, LLVM 17.0.6, DRM 3.54, 6.6.21-gentoo) 8GB VRAM
- RAM: 16GB
All compilations were done with clang.
Icecat 115.9.1:
LTO_ONLY: ~21 minutes
Speedometer - Infinity
Jetstream2 - Infinity
MotionMark - 990.56
PGO: ~45 minutes
Speedometer - Infinity
Jetstream2 - Infinity
MotionMark - 1010.20
PGO(cross): ~45 minutes
Speedometer - Infinity
Jetstream2 - Infinity
MotionMark - 1037.65
It appears that this patch fixes the Icecat[pgo] build failure. I'm not sure if there is a better way to disable extensions during pgo build or not as I'm not a developer. The browser is still quite fast without the pgo but IMO 45 minutes isn't a big deal for some extra performance. |
|
Back to top |
|
|
|