Skip to content

Fix download manager crash and dropped downloads#2406

Open
TwistedModding wants to merge 3 commits into
ModOrganizer2:masterfrom
TwistedModding:download-fixes
Open

Fix download manager crash and dropped downloads#2406
TwistedModding wants to merge 3 commits into
ModOrganizer2:masterfrom
TwistedModding:download-fixes

Conversation

@TwistedModding

Copy link
Copy Markdown

DownloadList::data() called the throwing getPendingDownload() for a pending row that could have transitioned to an active download between the model reporting its row count and the view querying the row, aborting with "get pending: invalid download index". Add a non-throwing tryGetPendingDownload() and use it so a stale row returns an empty value.

nxm links forwarded by short-lived secondary processes were dropped when the UI thread was busy (resolving a Nexus URL, or rescanning a large downloads folder), producing "failed to receive data from secondary process" for downloads started in quick succession. Move the local socket server onto a dedicated thread so connections are read the instant they arrive regardless of UI-thread load, keep the sender connected until the primary has read the message, and debounce the downloads-folder rescan so a burst of file changes no longer freezes the event loop.

TwistedModding and others added 3 commits June 12, 2026 14:47
DownloadList::data() called the throwing getPendingDownload() for a
pending row that could have transitioned to an active download between
the model reporting its row count and the view querying the row,
aborting with "get pending: invalid download index". Add a non-throwing
tryGetPendingDownload() and use it so a stale row returns an empty value.

nxm links forwarded by short-lived secondary processes were dropped when
the UI thread was busy (resolving a Nexus URL, or rescanning a large
downloads folder), producing "failed to receive data from secondary
process" for downloads started in quick succession. Move the local
socket server onto a dedicated thread so connections are read the instant
they arrive regardless of UI-thread load, keep the sender connected until
the primary has read the message, and debounce the downloads-folder
rescan so a burst of file changes no longer freezes the event loop.
@mick-lue

mick-lue commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Looks good to my eyes. I'll take it for a test ride if I can get my setup running again, as I have had this issue from IO stalls regularly

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