ActivityWatch / activitywatch

The best free and open-source automated time tracker. Cross-platform, extensible, privacy-focused.
https://activitywatch.net/
Mozilla Public License 2.0
11.44k stars 521 forks source link

aw-watcher-window regularly gets stuck in an infinite loop #920

Closed martin-t closed 9 months ago

martin-t commented 1 year ago

Describe the bug

The window watcher appears to have crashed - its row on the timeline view ends abruptly even though other watchers continue saving data. Logs contain AttributeError: 'BadRRModeError' object has no attribute 'sequence_number' at the time when the timeline ends - attached below.

EDIT 2023-07-28 It doesn't crash, it just gets stuck with 100% CPU usage.

To Reproduce

No idea what causes it, according to a different time tracker, i was working in vscode and konsole at the time of the crash and didn't do anything special. The same crash has happened 6 times over the past 4 months though.

Expected behavior

1) It shouldn't crash. 2) It should automatically restart itself unless the same error happens repeatedly.

Documentation

Logs from ~/.cache/activitywatch/log/aw-watcher-window/aw-watcher-window_2023-07-19T13-06-10.log

I only edited out the middle where the same warning keeps repeating hundreds of times.

2023-07-19 13:06:10 [INFO ]: aw-watcher-window started  (aw_watcher_window.main:62)
2023-07-19 13:06:11 [INFO ]: Connection to aw-server established by aw-watcher-window  (aw_client.client:436)
2023-07-19 13:54:30 [WARNING]: Unable to get window class, got a BadWindow exception.  (aw_watcher_window.xlib:106)
2023-07-19 13:54:30 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:54:30 [WARNING]: Unable to get window query_tree().parent, got a BadWindow exception from Xlib  (aw_watcher_window.xlib:116)
2023-07-19 13:54:30 [WARNING]: Unable to get window property NET_WM_NAME, got a BadWindow exception from Xlib  (aw_watcher_window.xlib:69)
2023-07-19 13:54:30 [ERROR]: Exception thrown while trying to get active window  (aw_watcher_window.main:124)
Traceback (most recent call last):
  File "aw_watcher_window/main.py", line 106, in heartbeat_loop
  File "aw_watcher_window/lib.py", line 59, in get_current_window
  File "aw_watcher_window/lib.py", line 17, in get_current_window_linux
  File "aw_watcher_window/xlib.py", line 77, in get_window_name
  File "Xlib/xobject/drawable.py", line 669, in get_wm_name
  File "Xlib/xobject/drawable.py", line 486, in get_full_text_property
  File "Xlib/xobject/drawable.py", line 472, in get_full_property
  File "Xlib/xobject/drawable.py", line 455, in get_property
  File "Xlib/protocol/rq.py", line 1368, in __init__
  File "Xlib/protocol/rq.py", line 1388, in reply
Xlib.error.BadWindow: <class 'Xlib.error.BadWindow'>: code = 3, resource_id = <Resource 0x07e00006>, sequence_number = 11028, major_opcode = 20, minor_opcode = 0
2023-07-19 13:56:38 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:56:38 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:56:38 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:56:38 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:56:39 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:56:39 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:56:39 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:56:39 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:57:13 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:57:13 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:57:13 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:57:13 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:57:14 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:57:14 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:57:14 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:57:14 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:57:50 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:57:50 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:57:50 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:57:50 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:58:31 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:58:31 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:58:31 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:58:31 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:58:41 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:58:41 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:58:41 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:58:41 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:58:42 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:58:42 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:58:42 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 13:58:42 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 16:51:49 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
[way too many lines like this]
2023-07-19 19:58:46 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:00:37 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:00:37 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:00:37 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:00:37 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:00:38 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:00:38 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:00:38 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:00:38 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:50 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:50 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:50 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:50 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:51 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:51 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:51 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:52 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:53 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:53 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:53 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:53 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:54 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:54 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:54 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:54 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:55 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:55 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:55 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:55 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:56 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:56 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:56 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:56 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:57 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:57 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:57 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:57 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:58 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:58 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:58 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:58 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:59 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:59 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:59 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:55:59 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:00 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:00 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:00 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:00 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:01 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:01 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:01 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:01 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:02 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:02 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:02 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:02 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:47 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:47 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:47 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:47 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:48 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:48 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:48 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:48 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:49 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:49 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:49 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:49 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:56 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:56 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:56 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:56 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:57 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:57 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:57 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:57 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:58 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:58 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:58 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:58 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:59 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:59 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:59 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:56:59 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:00 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:00 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:00 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:00 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:01 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:01 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:01 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:01 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:02 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:02 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:02 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:02 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:03 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:03 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:03 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:03 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:04 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:04 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:04 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:04 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:05 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:05 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:05 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:05 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:06 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:06 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:06 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:06 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:07 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:07 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:07 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:07 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:08 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:08 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:08 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 20:57:08 [WARNING]: Code made an unclear branch  (aw_watcher_window.xlib:112)
2023-07-19 21:18:43 [ERROR]: Exception thrown while trying to get active window  (aw_watcher_window.main:124)
Traceback (most recent call last):
  File "aw_watcher_window/main.py", line 106, in heartbeat_loop
  File "aw_watcher_window/lib.py", line 59, in get_current_window
  File "aw_watcher_window/lib.py", line 17, in get_current_window_linux
  File "aw_watcher_window/xlib.py", line 67, in get_window_name
  File "Xlib/xobject/drawable.py", line 476, in get_full_property
  File "Xlib/xobject/drawable.py", line 455, in get_property
  File "Xlib/protocol/rq.py", line 1368, in __init__
  File "Xlib/protocol/rq.py", line 1380, in reply
  File "Xlib/protocol/display.py", line 612, in send_and_recv
  File "Xlib/protocol/display.py", line 719, in parse_response
  File "Xlib/protocol/display.py", line 745, in parse_error_response
AttributeError: 'BadRRModeError' object has no attribute 'sequence_number'
github-actions[bot] commented 1 year ago

Hi there! As you're new to this repo, please make sure you've used an appropriate issue template and searched for duplicates (it helps us focus on actual development!). We'd also like to suggest that you read our contribution guidelines and our code of conduct. Thanks a bunch for opening your first issue! 🙏

BelKed commented 1 year ago

Seems like a duplicate of https://github.com/ActivityWatch/aw-watcher-window/issues/89

martin-t commented 1 year ago

Possibly. I recall AW having high CPU usage on my other computer a few times but back then i didn't investigate and just restarted it. This time I thought it crashed but i haven't looked at CPU usage so maybe it's the same issue.

martin-t commented 12 months ago

Ok, it happened again, CPU usage on one core is 100% from the window watcher and the error is in logs again. I renamed the issue since it doesn't crash, it gets stuck.

digitalextremist commented 9 months ago

Not sure if duplicate of:

But seeing same behavior with v0.12.2

Pinning CPU at 100% ( noticed due to fan running and CPU heat reaching mid ~190F, which is >50-80F higher than normal )

ErikBjare commented 9 months ago

@digitalextremist Should be fixed in v0.12.3b10 as per https://github.com/ActivityWatch/aw-watcher-window/issues/89#issuecomment-1717129228.

martin-t commented 9 months ago

I don't think this is fixed. I downloaded v0.12.3-beta.10 yesterday and today it happened again.

I am assuming it's the same bug - aw-watcher-window had 100% CPU usage and there are no events recorded during the 20 minutes it took me to notice.

However i can't confirm it because there's no log file for today, not sure why, does the new version not write logs for some reason? Did that path change? The only component producing logs is aw-server-rust now; aw-qt, aw-watcher-afk and aw-watcher-window stopped.

ErikBjare commented 9 months ago

@martin-t Thanks for reporting!

Looks like the dependency wasn't properly updated due to a conflict with aw-watcher-afk also depending on python-xlib. Fixed in https://github.com/ActivityWatch/aw-watcher-afk/commit/2b638db86dd24000775bff260691fdb190e7c74a. Validating change in CI now.

And about the log files, I noticed they had been moved after a breaking change in one of our dependencies https://github.com/ActivityWatch/aw-core/pull/122. Fixed now.

Making a new release soon.