clients icon indicating copy to clipboard operation
clients copied to clipboard

>>20% CPU utilization on minimized/idle bitwarden-app

Open StefanKaerst opened this issue 1 month ago • 4 comments

Steps To Reproduce

  1. start bitwarden desktop app, login into account (2 currently for me)
  2. click on one item so its content is shown!
  3. watch CPU statistics while doing nothing else, no mouse movement, no clicking

I set the CPU to ran at exactly 1Ghz !! (1000Mhz) on all cores. Intel® Core™ i7-1255U = 8+2 (10) cores, 12 threads

Expected Result

CPU utilization of bitwarden processes should stay close to zero. like any other interactive desktop application I don't actively use (google chrome, mozilla firefox/thunderbird which were open at the same time..)

hint: as I have to use my laptop for 24x7 on-call duty it drains the battery! not to mention the waste of energy. imagine thousands of running bitwarden clients "worldwide" - what an incredible waste of resources.

Actual Result

20% CPU utilization of bitwarden-app

could be the same as in #13717

Screenshots or Videos

top - 11:17:48 up  1:59,  2 users,  load average: 0.40, 0.57, 0.61
Tasks: 356 total, 2 running, 352 sleep, 0 d-sleep, 0 stopped, 2 zombie
%Cpu0  :  7.0 us,  2.0 sy,  0.0 ni, 91.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
%Cpu1  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
%Cpu2  : 12.9 us,  2.0 sy,  0.0 ni, 85.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
%Cpu3  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
%Cpu4  :  2.0 us,  1.0 sy,  0.0 ni, 97.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
%Cpu5  :  2.0 us,  1.0 sy,  0.0 ni, 97.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
%Cpu6  :  2.0 us,  1.0 sy,  0.0 ni, 97.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
%Cpu7  :  1.0 us,  1.0 sy,  0.0 ni, 98.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
%Cpu8  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
%Cpu9  :  1.0 us,  0.0 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
%Cpu10 :  1.0 us,  0.0 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
%Cpu11 :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
MiB Mem : 15687.14+total, 1839.230 free, 9832.789 used, 6996.488 buff/cache     
MiB Swap: 2048.312 total, 2048.312 free,    0.000 used. 5854.352 avail Mem 

    PID  %CPU     TIME+ COMMAND                                                                                                     nTH  P   TIME
   5438 22.84  21:15.85 /opt/Bitwarden/bitwarden-app --type=zygote                                                                   17  4  21:15
   5370 3.973   2:35.75 /opt/Bitwarden/bitwarden-app --type=zygote --no-zygote-sandbox                                               23  3   2:35
   5287 0.000   1:08.21 /opt/Bitwarden/bitwarden-app --enable-features=UseOzonePlatform,WaylandWindowDecorations --ozone-platform-+  52  4   1:08
   5290 0.000   0:00.03 /opt/Bitwarden/bitwarden-app --type=zygote --no-zygote-sandbox                                                1  6   0:00
   5291 0.000   0:00.02 /opt/Bitwarden/bitwarden-app --type=zygote                                                                    1  1   0:00
   5293 0.000   0:00.00 /opt/Bitwarden/bitwarden-app --type=zygote                                                                    1 11   0:00

%CPU 22.84 atm 21minutes 15seconds effective CPU time used while system uptime is only 11hours 17minutes!!!

Additional Context

I ran the following for a fracture of a second to capture some output. it produces like 10000 lines every second.

skaerst@t14-sk:~> s strace -fp 5438 
strace: Process 5438 attached with 17 threads
[pid  5614] futex(0x7f80e75e4190, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  5613] futex(0x7f80e7de5190, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  5612] futex(0x7f80e85e6190, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  5607] futex(0x7f80eadeb190, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  5606] futex(0x7f80eb5ec190, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  5438] restart_syscall(<... resuming interrupted futex ...> <unfinished ...>
[pid  5625] futex(0x7f80e6c840c0, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  5611] futex(0x7f80e95e8190, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  5609] futex(0x7f80ea5ea190, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  5459] futex(0x7f80ebfed190, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  5457] restart_syscall(<... resuming interrupted futex ...> <unfinished ...>
[pid  5441] futex(0x7f8175ffd190, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  5440] epoll_wait(3,  <unfinished ...>
[pid  5610] futex(0x7f80e8de7190, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  5442] futex(0x7f81757fc190, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  5608] futex(0x7f80e9de9190, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  5440] <... epoll_wait resumed>[], 16, 0) = 0
[pid  5443] epoll_wait(13,  <unfinished ...>
[pid  5440] epoll_wait(3,  <unfinished ...>
[pid  5443] <... epoll_wait resumed>[], 16, 0) = 0
[pid  5443] epoll_wait(13,  <unfinished ...>
[pid  5457] <... restart_syscall resumed>) = -1 ETIMEDOUT (Connection timed out)
[pid  5457] futex(0x7f80ec7ee058, FUTEX_WAKE_PRIVATE, 1) = 0
[pid  5443] <... epoll_wait resumed>[{events=EPOLLIN, data=0x26d40050a788}], 16, 272110) = 1
[pid  5457] futex(0x7f80ec7ee0b0, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  5443] recvmsg(22, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\20\0\0\0p\0\0\08|t\313\1\0\0\0\30\0\24\0\0\0\0\0.\321\5\0\0\0\0\0"..., iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, MSG_DONTWAIT) = 112
[pid  5443] futex(0x7f80ec7ee0b0, FUTEX_WAKE_PRIVATE, 2147483647 <unfinished ...>
[pid  5457] <... futex resumed>)        = 0
[pid  5443] <... futex resumed>)        = 1
[pid  5457] futex(0x7f80ec7ee068, FUTEX_WAIT_PRIVATE, 2, NULL <unfinished ...>
[pid  5443] futex(0x7f80ec7ee068, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
[pid  5457] <... futex resumed>)        = -1 EAGAIN (Resource temporarily unavailable)
[pid  5443] <... futex resumed>)        = 0
[pid  5457] futex(0x7f80ec7ee068, FUTEX_WAKE_PRIVATE, 1) = 0
[pid  5443] epoll_wait(13, [], 16, 0)   = 0
[pid  5443] epoll_wait(13,  <unfinished ...>
[pid  5457] futex(0x7ffe8f8bbf50, FUTEX_WAKE_PRIVATE, 2147483647) = 1
[pid  5438] <... restart_syscall resumed>) = 0
[pid  5457] futex(0x7f80ec7ee0a0, FUTEX_WAIT_BITSET_PRIVATE, 0, {tv_sec=7708, tv_nsec=392324833}, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  5438] futex(0x7ffe8f8bbf08, FUTEX_WAKE_PRIVATE, 1) = 0
[pid  5438] futex(0x7f80ec7ee0a0, FUTEX_WAKE_PRIVATE, 2147483647) = 1
[pid  5457] <... futex resumed>)        = 0
[pid  5457] futex(0x7f80ec7ee058, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
[pid  5438] getrandom( <unfinished ...>
[pid  5457] <... futex resumed>)        = 0
[pid  5438] <... getrandom resumed>"\x88\x4f\xe5\xdf\x45\xbc\xf1\x1a", 8, 0) = 8
[pid  5457] sendto(22, "\20\0\0\0p\0\0\0\26\214t\313\1\0\0\0\30\0\24\0\0\0\0\0e\316\5\0\0\0\0\0"..., 112, MSG_NOSIGNAL, NULL, 0 <unfinished ...>
[pid  5438] futex(0x7ffe8f8bbf50, FUTEX_WAIT_BITSET_PRIVATE, 0, {tv_sec=7709, tv_nsec=40500539}, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid  5457] <... sendto resumed>)       = 112
[pid  5457] futex(0x7f80ec7ee0a0, FUTEX_WAIT_BITSET_PRIVATE, 0, {tv_sec=7708, tv_nsec=392325281}, FUTEX_BITSET_MATCH_ANY) = -1 ETIMEDOUT (Connection timed out)
[pid  5457] futex(0x7f80ec7ee058, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
[pid  5443] <... epoll_wait resumed>[{events=EPOLLIN, data=0x26d40050a788}], 16, 272110) = 1
[pid  5457] <... futex resumed>)        = 0

..

HTH

Operating System

Linux

Operating System Version

openSUSE Leap 16.0

Installation method

-Direct Download (from bitwarden.com)- RPM download at https://github.com/bitwarden/clients/releases

Build Version

Version 2025.10.0 SDK 'main (d0262d3)' Shell 36.9.3 Renderer 136.0.7103.177 Node 22.19.0 Architecture x64

Issue Tracking Info

  • [x] I understand that work is tracked outside of GitHub. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

StefanKaerst avatar Oct 27 '25 10:10 StefanKaerst

Thank you for reporting this issue! We've added this to our internal tracking system. ID: PM-27466 Link (for internal use): https://bitwarden.atlassian.net/browse/PM-27466

bitwarden-bot avatar Oct 27 '25 10:10 bitwarden-bot

Hi there,

This report has been escalated for further investigation. If you have more information that can help us, please add it below.

Thanks!

daniellbw avatar Oct 27 '25 13:10 daniellbw

I am seeing the same here. I'm on openSUSE Tumbleweed with Bitwarden desktop app 2025.11.2, installed from official Appimage. See my top statistics:

Image

Bitwarden is sitting in the tray doing nothing.

Here is Bitwarden app release: Version 2025.11.2 SDK 'main (8ef7951)' Shell 37.7.0 Renderer 138.0.7204.251 Node 22.20.0 Architecture x64

Cris70 avatar Dec 02 '25 11:12 Cris70

I'm seeing the same. My operating system is Fedora and I installed the Bitwarden app as a Flatpak

Version 2025.11.2 SDK 'main (8ef7951)' Shell 37.7.0 Renderer 138.0.7204.251 Node 22.20.0 Architecture x64

Image

adam-blackwater avatar Dec 11 '25 19:12 adam-blackwater