Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
GNU Iceat 115.3* pgo build fails
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Unsupported Software
View previous topic :: View next topic  
Author Message
Pipeartist
n00b
n00b


Joined: 12 Feb 2023
Posts: 12

PostPosted: Sun Oct 22, 2023 5:19 pm    Post subject: GNU Iceat 115.3* pgo build fails Reply with quote

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
View user's profile Send private message
Juippisi
Developer
Developer


Joined: 30 Sep 2005
Posts: 745
Location: /home

PostPosted: Mon Oct 23, 2023 5:16 am    Post subject: Reply with quote

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
View user's profile Send private message
Pipeartist
n00b
n00b


Joined: 12 Feb 2023
Posts: 12

PostPosted: Wed Oct 25, 2023 1:00 am    Post subject: Reply with quote

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
View user's profile Send private message
Pipeartist
n00b
n00b


Joined: 12 Feb 2023
Posts: 12

PostPosted: Fri Mar 29, 2024 12:27 am    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Unsupported Software All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum