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 摘要。