ActivityWatch / ActivityWatch/aw-watcher-window

macOS jxa strategy: multiprocessing child processes crash with unrecognized arguments, killing the watcher

未關閉
#133 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
Python
星號
129
分支
81
平均合併
2 天 10 小時
30 天內合併 PR
4

描述

## Description

On macOS, when using the `jxa` strategy mentioned in [#1141](https://github.com/ActivityWatch/activitywatch/issues/1141) (or `applescript`), the `aw-client` library spawns child processes via Python's `multiprocessing` module. These child processes inherit the parent's command-line arguments, which include multiprocessing-specific flags like `--multiprocessing-fork tracker_fd=7 pipe_handle=9` and `-B -S -I -c from multiprocessing.resource_tracker import main;main(6)`.

`aw-watcher-window`'s argparse rejects these unrecognized arguments, causing the child processes to crash. This eventually corrupts or kills the parent process, causing the window watcher to stop collecting data entirely.

## To Reproduce

1. Set `strategy_macos = "jxa"` in `aw-watcher-window.toml`
2. Start ActivityWatch
3. Observe that aw-watcher-window starts and sends heartbeats
4. After ~15 minutes, aw-watcher-window stops (crashed by multiprocessing child process failure)

## Expected behavior

The watcher should either:
- Ignore unrecognized arguments in multiprocessing child processes
- Use `spawn` multiprocessing context instead of `fork` (which doesn't inherit argv)
- Or handle this in `aw-client`'s queued client implementation

## Actual behavior

The child processes crash with:
```
usage: aw-watcher-window [-h] [--host HOST] [--port PORT] [--testing]
[--exclude-title]
[--exclude-titles EXCLUDE_TITLES [EXCLUDE_TITLES ...]]
[--verbose] [--poll-time POLL_TIME]
[--strategy {jxa,applescript,swift}]
aw-watcher-window: error: unrecognized arguments: --multiprocessing-fork tracker_fd=7 pipe_handle=9
aw-watcher-window: error: unrecognized arguments: -B -S -I -c from multiprocessing.resource_tracker import main;main(6)
```

## Environment

- **OS**: macOS Sequoia 15.x
- **ActivityWatch version**: v0.13.2
- **Strategy**: jxa (also affects applescript)

## Additional context

This blocks the workaround for #121 (swift exclude_title/exclude_titles). The jxa fallback crashes due to this multiprocessing bug, making title exclusion impossible on macOS.

貢獻指南

這個儲存庫沒有索引到貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。