From 68f98491d5f2cfb81e931b1600a26ff890270d67 Mon Sep 17 00:00:00 2001 From: abhicommands <114682464+abhicommands@users.noreply.github.com> Date: Fri, 6 Feb 2026 22:21:48 -0500 Subject: [PATCH] Fix InstanceStaging success reentry assertion crash Signed-off-by: abhicommands <114682464+abhicommands@users.noreply.github.com> --- launcher/InstanceList.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/launcher/InstanceList.cpp b/launcher/InstanceList.cpp index 68681a9bb..98b420c31 100644 --- a/launcher/InstanceList.cpp +++ b/launcher/InstanceList.cpp @@ -928,6 +928,7 @@ class InstanceStaging : public Task { connect(child, &Task::progress, this, &InstanceStaging::setProgress); connect(child, &Task::stepProgress, this, &InstanceStaging::propagateStepProgress); connect(&m_backoffTimer, &QTimer::timeout, this, &InstanceStaging::childSucceeded); + m_backoffTimer.setSingleShot(true); } virtual ~InstanceStaging() {} @@ -959,13 +960,17 @@ class InstanceStaging : public Task { private slots: void childSucceeded() { + if (!isRunning()) + return; unsigned sleepTime = backoff(); if (m_parent->commitStagedInstance(m_stagingPath, *m_child.get(), m_child->group(), *m_child.get())) { + m_backoffTimer.stop(); emitSucceeded(); return; } // we actually failed, retry? if (sleepTime == maxBackoff) { + m_backoffTimer.stop(); emitFailed(tr("Failed to commit instance, even after multiple retries. It is being blocked by something.")); return; } @@ -974,12 +979,14 @@ class InstanceStaging : public Task { } void childFailed(const QString& reason) { + m_backoffTimer.stop(); m_parent->destroyStagingPath(m_stagingPath); emitFailed(reason); } void childAborted() { + m_backoffTimer.stop(); m_parent->destroyStagingPath(m_stagingPath); emitAborted(); }