100% CPU usage with Tor Browser in Whonix

Tor Browser seems to be using 100% CPU with Whonix after suspending it in Qubes OS. (extensions.torbutton.display_circuit was set to false)

strace of that firefox.real process:

poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=28, events=POLLIN}, {fd=54, events=POLLIN}], 5, 0) = 1 ([{fd=28, revents=POLLIN}])
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=126758524}) = 0
read(28, "\372", 1)                     = 1
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=126814100}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=126840480}) = 0
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=28, events=POLLIN}, {fd=54, events=POLLIN}], 5, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=126966808}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=126996223}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=127023667}) = 0
gettimeofday({tv_sec=1654193952, tv_usec=68382}, NULL) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=127085267}) = 0
ioctl(62, FIONREAD, [0])                = 0
ioctl(62, FIONREAD, [0])                = 0
recvfrom(62, "", 0, 0, NULL, NULL)      = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=127210674}) = 0
gettimeofday({tv_sec=1654193952, tv_usec=68568}, NULL) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=127270514}) = 0
write(29, "\372", 1)                    = 1
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=127326622}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=127353195}) = 0
gettimeofday({tv_sec=1654193952, tv_usec=68708}, NULL) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=127417594}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=127484800}) = 0
write(21, "M", 1)                       = 1
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=127573433}) = 0
gettimeofday({tv_sec=1654193952, tv_usec=68939}, NULL) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=127637183}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=127666487}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=127692831}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=127719544}) = 0
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=28, events=POLLIN}, {fd=54, events=POLLIN}], 5, 0) = 1 ([{fd=28, revents=POLLIN}])
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=127841280}) = 0
read(28, "\372", 1)                     = 1
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=127914602}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=127940983}) = 0
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=28, events=POLLIN}, {fd=54, events=POLLIN}], 5, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=128157522}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=128189848}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=128217804}) = 0
gettimeofday({tv_sec=1654193952, tv_usec=69578}, NULL) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=128284446}) = 0
ioctl(62, FIONREAD, [0])                = 0
ioctl(62, FIONREAD, [0])                = 0
recvfrom(62, "", 0, 0, NULL, NULL)      = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=128423061}) = 0
gettimeofday({tv_sec=1654193952, tv_usec=69780}, NULL) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=128482561}) = 0
write(29, "\372", 1)                    = 1
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=128539001}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=128565293}) = 0
gettimeofday({tv_sec=1654193952, tv_usec=69919}, NULL) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=128630251}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=128683932}) = 0
write(21, "M", 1)                       = 1
futex(0x76f1be800018, FUTEX_WAKE_PRIVATE, 1) = 1
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=128808227}) = 0
gettimeofday({tv_sec=1654193952, tv_usec=70178}, NULL) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=128891705}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=128922483}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=128949658}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=128977580}) = 0
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=28, events=POLLIN}, {fd=54, events=POLLIN}], 5, 0) = 1 ([{fd=28, revents=POLLIN}])
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=129113787}) = 0
read(28, "\372", 1)                     = 1
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=129172552}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=129199407}) = 0
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=28, events=POLLIN}, {fd=54, events=POLLIN}], 5, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=129393462}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=18171, tv_nsec=129423897}) = 0
1 Like

Tor Browser Consumes 100% CPU after Clock Sync or Suspend/Resume?

I guess you already saw that.

This would require Generic Bug Reproduction.

https://www.whonix.org/wiki/Free_Support_Principle

Is this reproducible outside of Whonix?

In other words, is the reproducible in Tor Browser a (Qubes) Debian (App Qubes / VM)?

TorBrowser 11.5 (older too) on up-to-date Whonix-Workstation-XFCE randomly starts eating CPU and continues to do so even with just an about:newtab open.

Screenshot shows extensions (uBlock, inactive) but also happens without them.
Clock in sync.
Used to happen after an hour or so of browsing, until I set extensions.torbutton.display_circuit=false, now it’s less frequent but still happens every other day.

EDIT: typo

1 Like

The bug has been fixed I believe:

Would be glad if anyone could confirm it.

1 Like