Skip to content

Fix launch 0x8BADF00D and Downloads ghost rows - #147

Merged
sanylax2 merged 1 commit into
feat/open-prs-priority-downloadsfrom
fix/launch-watchdog-downloads-ghosts
Sep 22, 2026
Merged

sanylax2 merged 1 commit into
feat/open-prs-priority-downloadsfrom
fix/launch-watchdog-downloads-ghosts

Conversation

@sanylax0

Copy link
Copy Markdown
Collaborator

Summary

  • Device crash logs on sp17 show repeated 0x8BADF00D scene-create kills inside resumePreparation → enqueue (SwiftData notify / SQLite checkpoint). Suspend per-row sortJobs during bulk resume/import and delay resume ~300ms after restore so scene-create can finish.
  • Deleting a track during backoff left a forever-“Waiting” Downloads row. handleTracksDeleted clears jobs/priority/retry state, cancels limiter waiters without granting a slot, and is wired from UI + sync deletes.
  • Sort Downloads by phase first (active downloads above prioritized waiting), matching real limiter behavior.

Test plan

  • Built + installed on physical iPhone Air (sp17); process stayed alive after cold launch
  • Cold launch with a large unfinished import: no 0x8BADF00D kill within ~15s
  • Delete a downloading/waiting track: row disappears from Downloads immediately
  • Import a large playlist: UI stays responsive while jobs appear

Made with Cursor

Device crash logs showed repeated 0x8BADF00D kills inside resumePreparation enqueue; suspend per-row job sorts during bulk resume/import and delay resume until after scene-create. Also clear ingest jobs/waiters on delete so Downloads cannot keep forever-waiting ghosts.

Co-authored-by: Cursor <cursoragent@cursor.com>
@sanylax2
sanylax2 merged commit 38cd1de into feat/open-prs-priority-downloads Sep 22, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants