fix: don't detach threads (#6333)

Previously, we would detach threads that did not exit in a reasonable
time, meaning they'd continue running and potentially accessing data
that had been freed, causing us to crash.
With this change, we _dont_ detach the thread, and let the thread
destructor do as it pleases (which will be terminating).
Neither solution is clean - old solution would sometimes work, but this
should give us a better indicator of where we're doing things wrong.
This commit is contained in:
pajlada
2025-07-18 22:07:22 +02:00
committed by GitHub
parent cda625f3ce
commit a691bb4c51
4 changed files with 3 additions and 8 deletions
+1
View File
@@ -66,6 +66,7 @@
- Dev: Implemented customizable display names for enums. (#6238)
- Dev: Refactored event API initialization away from Application and into TwitchIrcServer. (#6198)
- Dev: Updated GoogleTest to v1.17.0. (#6180)
- Dev: Don't detach threads. (#6333)
- Dev: Mini refactor of `TwitchAccount`. (#6182)
- Dev: Refactored away some `getApp` usages in `WindowManager`. (#6194)
- Dev: Simplified string literals to be a re-export of Qt functions. (#6175)
@@ -235,7 +235,6 @@ MiniaudioBackend::~MiniaudioBackend()
qCWarning(chatterinoSound)
<< "Audio thread did not stop within 1 second";
this->audioThread->detach();
}
}
@@ -175,9 +175,7 @@ public:
}
qCWarning(chatterinoLiveupdates)
<< "Thread didn't finish after stopping, discard it";
// detach the thread so the destructor doesn't attempt any joining
this->mainThread_->detach();
<< "Thread didn't finish after stopping";
}
protected:
+1 -4
View File
@@ -143,10 +143,7 @@ void PubSub::stop()
return;
}
qCWarning(chatterinoLiveupdates)
<< "Thread didn't finish after stopping, discard it";
// detach the thread so the destructor doesn't attempt any joining
this->thread->detach();
qCWarning(chatterinoLiveupdates) << "Thread didn't finish after stopping";
}
void PubSub::listenToChannelPointRewards(const QString &channelID)