Hello,
I would like to share a `WebKitWebProcess` high CPU problem that I reproduced and fixed on **Zorin OS 18.1**.
After starting the computer, one logical CPU core remained at **100% usage indefinitely**. In GNOME System Monitor, the process responsible was:
`WebKitWebProcess`
On my system with 20 logical CPUs, the process showed approximately 5% total CPU usage, while one individual logical CPU was continuously running at 100%.
## Identifying the parent application
I checked which application started the process:
```bash
p=$(pgrep -n -f '[W]ebKitWebProcess')
echo "PID WebKitWebProcess: $p"
pstree -aps "$p"
The relevant part of the output was:
systemd
└─ gnome-session
└─ portmaster
└─ WebKitWebProcess
I then tested this directly:
- after closing Portmaster,
WebKitWebProcessdisappeared and the 100% CPU usage stopped; - after starting Portmaster again,
WebKitWebProcessappeared again and one CPU core immediately returned to 100%.
So Portmaster was definitely the application whose WebKit process triggered the high CPU condition on this system.
However, I do not know which application originally created the problematic fontconfig cache described below. Therefore I am not claiming that Portmaster itself created the cache problem.
Installed versions
The relevant packages on my Zorin OS 18.1 installation are:
fontconfig 2.15.0-1.1ubuntu2
libfontconfig1 2.15.0-1.1ubuntu2
libwebkit2gtk-4.1-0 2.52.6-0ubuntu0.24.04.1
Google Chrome is not installed on this computer. Chromium is installed.
Checking the user fontconfig cache
I checked for symbolic links in the user fontconfig cache:
find ~/.cache/fontconfig -maxdepth 1 -type l -printf '%f -> %l\n'
There were many links following this pattern:
*-le64.cache-9 -> *-le64.cache-12
*-le64.cache-10 -> *-le64.cache-12
*-le64.cache-11 -> *-le64.cache-12
Workaround that fixed the problem
I terminated the running WebKitWebProcess processes using the full process name:
pkill -f '[W]ebKitWebProcess'
I then removed only symbolic links from the user fontconfig cache and rebuilt the font cache:
find ~/.cache/fontconfig -type l -delete
fc-cache -f
I checked the cache again:
find ~/.cache/fontconfig -maxdepth 1 -type l -printf '%f -> %l\n'
There was no output.
I then rebooted the computer.
Result after reboot
After reboot:
- Portmaster started and worked normally;
WebKitWebProcesswas still present, as expected;- its CPU usage was approximately 0.03% while idle;
- no logical CPU remained at 100%;
- the problematic symbolic links had not returned.
The same check:
find ~/.cache/fontconfig -maxdepth 1 -type l -printf '%f -> %l\n'
again produced no output.
So on this system, removing the symbolic links from ~/.cache/fontconfig and rebuilding the font cache completely resolved the persistent WebKitWebProcess CPU load, including after a reboot.
Important note
I would not consider this a universal fix for every case where WebKitWebProcess uses a lot of CPU.
Before applying the workaround, I recommend checking whether the affected system actually contains the same cache-9 , cache-10 or cache-11 symbolic links pointing to cache-12 .
If those links are not present, the high CPU usage may have a different cause.
I also did not determine which application originally created the cache-12 files and compatibility symbolic links on my system.
Related upstream reports
This appears to be related to the recently reported Ubuntu/WebKitGTK/fontconfig issue:
- Ubuntu bug #2168520:
https://bugs.launchpad.net/bugs/2168520 - Ubuntu fontconfig bug #2168420:
Bug #2168420 " libfontconfig: SIGSEGV in FcCharSetHasChar (rax=0... : Bugs : fontconfig package : Ubuntu - WebKit bug #325185:
https://bugs.webkit.org/show_bug.cgi?id=325185
I am posting my result because this reproduces the same general symptom on Zorin OS 18.1 , but in my case the affected application was Portmaster , and Google Chrome is not installed .
I hope this may help other Zorin OS users who encounter the same WebKitWebProcess high CPU problem.