block / block/buzz

macOS: stuck launchd KeepAlive job (xyz.block.buzz.restart.*) reopens Buzz every few seconds after Quit

Open
#4,840 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
32.7k
Forks
4.3k
Avg merge
1d 13h
Merged PRs (30d)
253

Description

## Summary

After a full quit (**⌘Q** / Buzz → Quit), Buzz Desktop on macOS can **reopen itself every ~3 seconds** indefinitely. This is **not** the intentional close-to-tray behavior (red X hides the window; app stays in Dock/menu bar).

Observed on Buzz **0.5.5** (`xyz.block.buzz.app`).

## Root cause (observed on user machine)

A **submitted** launchd job (no on-disk LaunchAgents plist) with **KeepAlive** was looping:

```text
/bin/sh -c sleep 3; /usr/bin/open -a /Applications/Buzz.app
```

| Field | Value |
|-------|--------|
| Label | `xyz.block.buzz.restart.20260801-0624` |
| Properties | **keepalive** |
| Type | Submitted (ephemeral via `launchctl submit`) |
| Runs at discovery | ~33,434 |
| Label date stamp | suggests ~2026-08-01 |

Because the job exits after `open`, KeepAlive immediately respawns it → permanent reopen loop every few seconds.

Parent of the shell was `launchd` (PID 1).

## Workaround (user-side, verified)

```bash
launchctl bootout "gui/$(id -u)/xyz.block.buzz.restart."
# example:
# launchctl bootout "gui/$(id -u)/xyz.block.buzz.restart.20260801-0624"
```

Then quit with ⌘Q and wait 10–15s — app should stay closed.

To check for recurrence:

```bash
launchctl list | grep -i buzz
ps aux | grep -E 'sleep 3;.*Buzz' | grep -v grep
```

## Related (not the same bug)

- Red X on main window still **hides** to tray (intentional). Full quit remains ⌘Q / tray Quit.
- Close-to-tray configurability: #4024

## Product ask

1. **Find who submits** `xyz.block.buzz.restart.*` (updater, recovery path, older binary, external helper). No matching string found in current desktop tree at investigation time.
2. If a one-shot relaunch is intentional, use a **non-KeepAlive** one-shot job (or plain `open` without KeepAlive submit). **KeepAlive + exit-after-open = permanent reopen loop.**
3. Prefer cleaning up any prior restart labels on launch/quit so a stale job cannot outlive the session that created it.

## Environment

- OS: macOS (gui domain, uid 501 on the reporting machine)
- App: Buzz Desktop 0.5.5
- Bundle id: `xyz.block.buzz.app`
- Support report: Buzz Support channel (auto-reopen after quit; notifications off)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.