CrashReporter: fix deadlocks by making it mostly async-signal-safe (#5771)
`CrashReporter::createAndSaveCrash()` is not async-signal-safe, resulting in random deadlocks/double-crashes during Hyprland crashes. This changes the function to be (mostly) async-signal-safe.
This commit is contained in:
parent
55490637aa
commit
90a53aed59
6 changed files with 351 additions and 70 deletions
|
|
@ -194,3 +194,13 @@ std::vector<CPlugin*> CPluginSystem::getAllPlugins() {
|
|||
results[i] = m_vLoadedPlugins[i].get();
|
||||
return results;
|
||||
}
|
||||
|
||||
size_t CPluginSystem::pluginCount() {
|
||||
return m_vLoadedPlugins.size();
|
||||
}
|
||||
|
||||
void CPluginSystem::sig_getPlugins(CPlugin** data, size_t len) {
|
||||
for (size_t i = 0; i < std::min(m_vLoadedPlugins.size(), len); i++) {
|
||||
data[i] = m_vLoadedPlugins[i].get();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,6 +37,8 @@ class CPluginSystem {
|
|||
CPlugin* getPluginByPath(const std::string& path);
|
||||
CPlugin* getPluginByHandle(HANDLE handle);
|
||||
std::vector<CPlugin*> getAllPlugins();
|
||||
size_t pluginCount();
|
||||
void sig_getPlugins(CPlugin** data, size_t len);
|
||||
|
||||
bool m_bAllowConfigVars = false;
|
||||
std::string m_szLastError = "";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue