Package: libwebkit2gtk-4.0-37 Version: 2.28.1-1 Severity: normal Tags: upstream Forwarded: https://bugs.webkit.org/show_bug.cgi?id=210561
Since upgrading to 2.28.0-2, /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitWebProcess polls like mad and causes excessive wakeups, draining my laptop battery: $ ps axfu [...] tomi 243322 15.0 0.2 102683612 96224 ? Sl 17:53 0:00 liferea tomi 243332 4.7 0.2 102722076 90816 ? SLl 17:53 0:00 \_ /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitWebProcess 7 19 tomi 243333 1.5 0.1 103007620 53204 ? SLl 17:53 0:00 \_ /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitNetworkProcess 8 1 $ LANG=C strace -f -p 243332 strace: Process 243332 attached with 11 threads [pid 243360] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 243359] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 243357] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 243356] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 243355] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 243344] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 243343] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 243342] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 243341] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 243340] futex(0x7f14fb18c7cc, FUTEX_WAIT_PRIVATE, 0, NULL <unfinished ...> [pid 243332] restart_syscall(<... resuming interrupted read ...>) = 0 [pid 243332] recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) [pid 243332] poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}], 2, 17) = 0 (Timeout) [pid 243332] recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) [pid 243332] poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}], 2, 16) = 0 (Timeout) [pid 243332] recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) [pid 243332] poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}], 2, 16) = 0 (Timeout) [pid 243332] recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) [pid 243332] poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}], 2, 16) = 0 (Timeout) [pid 243332] recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) [pid 243332] poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}], 2, 15) = 0 (Timeout) [pid 243332] recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) [pid 243332] poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}], 2, 16) = 0 (Timeout) [pid 243332] recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) [pid 243332] poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}], 2, 16) = 0 (Timeout) [pid 243332] recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) [pid 243332] poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}], 2, 16) = 0 (Timeout) I originally thought this is a regression since 2.26.4-1~deb10u2, as that works just fine: $ LANG=C strace -f -p 253200 strace: Process 253200 attached with 11 threads [pid 253226] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 253223] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 253222] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 253221] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 253220] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 253212] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 253211] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 253210] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 253209] restart_syscall(<... resuming interrupted read ...> <unfinished ...> [pid 253208] futex(0x7fcbcfee040c, FUTEX_WAIT_PRIVATE, 0, NULL <unfinished ...> [pid 253200] restart_syscall(<... resuming interrupted read ...>) = 0 [pid 253200] recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) [pid 253200] poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}], 2, 19885 <unfinished ...> But it turns out visiting https://en.wikipedia.org/wiki/GIF#/media/File:Rotating_earth_(large).gif using surf and webkit 2.26.4-1~deb10u2 makes its WebKitWebProcess start polling like crazy as well, and forever, even after switching to about:blank. I went a bit further, found a probable cause and filed this upstream at https://bugs.webkit.org/show_bug.cgi?id=210561 as I'm quite certain this is affecting all distributions that use webgit2gtk. -- System Information: Debian Release: bullseye/sid APT prefers testing APT policy: (990, 'testing'), (990, 'stable'), (500, 'unstable-debug'), (500, 'testing-debug'), (500, 'stable-debug'), (500, 'unstable'), (500, 'stable'), (1, 'experimental-debug'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 5.4.0-4-amd64 (SMP w/4 CPU cores) Kernel taint flags: TAINT_USER, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE Locale: LANG=cs_CZ.UTF-8, LC_CTYPE=cs_CZ.UTF-8 (charmap=UTF-8), LANGUAGE=cs_CZ.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages libwebkit2gtk-4.0-37 depends on: ii bubblewrap 0.4.1-1 ii libatk1.0-0 2.36.0-2 ii libc6 2.30-4 ii libcairo2 1.16.0-4 ii libegl1 1.3.1-1 ii libenchant-2-2 2.2.8-1 ii libfontconfig1 2.13.1-2+b1 ii libfreetype6 2.10.1-2 ii libgcc-s1 10-20200324-1 ii libgcrypt20 1.8.5-5 ii libgdk-pixbuf2.0-0 2.40.0+dfsg-4 ii libgl1 1.3.1-1 ii libglib2.0-0 2.64.1-1 ii libgstreamer-gl1.0-0 1.16.2-4 ii libgstreamer-plugins-base1.0-0 1.16.2-4 ii libgstreamer1.0-0 1.16.2-2 ii libgtk-3-0 3.24.18-1 ii libharfbuzz-icu0 2.6.4-1 ii libharfbuzz0b 2.6.4-1 ii libhyphen0 2.8.8-7 ii libicu63 63.2-3 ii libjavascriptcoregtk-4.0-18 2.28.1-1 ii libjpeg62-turbo 1:1.5.2-2+b1 ii libnotify4 0.7.9-1 ii libopenjp2-7 2.3.1-1 hi libpango-1.0-0 1.42.4-8 ii libpng16-16 1.6.37-2 ii libseccomp2 2.4.3-1+b1 ii libsecret-1-0 0.20.2-1 ii libsoup2.4-1 2.70.0-1 ii libsqlite3-0 3.31.1-4 ii libstdc++6 10-20200324-1 ii libtasn1-6 4.16.0-2 ii libwayland-client0 1.18.0-1 ii libwayland-egl1 1.18.0-1 ii libwayland-server0 1.18.0-1 ii libwebp6 0.6.1-2+b1 ii libwebpdemux2 0.6.1-2+b1 ii libwoff1 1.0.2-1+b1 ii libwpe-1.0-1 1.6.0-1 ii libwpebackend-fdo-1.0-1 1.6.0-1 ii libx11-6 2:1.6.9-2 ii libxcomposite1 1:0.4.4-2 ii libxdamage1 1:1.1.5-1 ii libxml2 2.9.10+dfsg-4 ii libxslt1.1 1.1.34-4 ii xdg-dbus-proxy 0.1.2-1 ii zlib1g 1:1.2.11.dfsg-2 Versions of packages libwebkit2gtk-4.0-37 recommends: ii gstreamer1.0-gl 1.16.2-4 ii gstreamer1.0-libav 1.16.2-2 ii gstreamer1.0-plugins-good 1.16.2-3 ii gstreamer1.0-pulseaudio 1.16.2-3 ii libgl1-mesa-dri 19.3.3-1 libwebkit2gtk-4.0-37 suggests no packages. -- no debconf information -- Tomáš Janoušek, a.k.a. Pivník, a.k.a. Liskni_si, http://work.lisk.in/