Error logging filling up disk
Today my OS (vanilla Ubuntu 22.04) warned me that I had only a couple of GB left on my main disk. After some dinging I found that aw-watcher-window was spamming my disk with error logs. For example ~/.cache/activitywatch/log/aw-watcher-window is currently 160GB.
In those large log files, I see basically every second an entry like this:
2022-12-05 09:17:59 [ERROR]: Exception thrown while trying to get active window (aw_watcher_window.main:110)
Traceback (most recent call last):
File "Xlib/protocol/display.py", line 583, in send_and_recv
BrokenPipeError: [Errno 32] Broken pipe
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1367, in __init__
File "Xlib/protocol/display.py", line 355, in send_request
File "aw_watcher_window/main.py", line 107, in heartbeat_loop
File "aw_watcher_window/lib.py", line 53, in get_current_window
File "aw_watcher_window/lib.py", line 8, in get_current_window_linux
File "aw_watcher_window/xlib.py", line 37, in get_current_window
File "aw_watcher_window/xlib.py", line 20, in _get_current_window_id
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 1369, in __init__
File "Xlib/protocol/rq.py", line 1381, in reply
File "Xlib/protocol/display.py", line 586, in send_and_recv
Xlib.error.ConnectionClosedError: Display connection closed by server: [Errno 32] Broken pipe
Are you using the latest version? Seems like the error was fixed some time ago: https://github.com/ActivityWatch/aw-core/pull/114
By the way, this issue seems to be relevant to https://github.com/ActivityWatch/activitywatch/issues/756
If I can reconstruct correctly, I was (and still am) running version 0.12.1 (installed Nov 6th 2022), which was latest version at that time
Hmm... Maybe it was fixed only for Windows...
But, would you mind upgrading to the latest version (v0.12.2)? It might have been fixed there...
If not, feel free to let us know :)