diff --git a/src/core/debuginfo.cpp b/src/core/debuginfo.cpp index abc467d..ae227f8 100644 --- a/src/core/debuginfo.cpp +++ b/src/core/debuginfo.cpp @@ -129,13 +129,12 @@ QString envInfo() { auto stream = QTextStream(&info); for (auto** envp = environ; *envp != nullptr; ++envp) { // NOLINT - auto prefixes = std::array { + auto prefixes = std::array { "QS_", "QT_", "QML_", "QML2_", "QSG_", - "XDG_CURRENT_DESKTOP=", }; for (const auto& prefix: prefixes) { diff --git a/src/core/plugin.cpp b/src/core/plugin.cpp index e6cd1bb..0eb9a06 100644 --- a/src/core/plugin.cpp +++ b/src/core/plugin.cpp @@ -9,18 +9,6 @@ static QVector plugins; // NOLINT void QsEnginePlugin::registerPlugin(QsEnginePlugin& plugin) { plugins.push_back(&plugin); } -void QsEnginePlugin::preinitPluginsOnly() { - plugins.removeIf([](QsEnginePlugin* plugin) { return !plugin->applies(); }); - - std::ranges::sort(plugins, [](QsEnginePlugin* a, QsEnginePlugin* b) { - return b->dependencies().contains(a->name()); - }); - - for (QsEnginePlugin* plugin: plugins) { - plugin->preinit(); - } -} - void QsEnginePlugin::initPlugins() { plugins.removeIf([](QsEnginePlugin* plugin) { return !plugin->applies(); }); @@ -28,10 +16,6 @@ void QsEnginePlugin::initPlugins() { return b->dependencies().contains(a->name()); }); - for (QsEnginePlugin* plugin: plugins) { - plugin->preinit(); - } - for (QsEnginePlugin* plugin: plugins) { plugin->init(); } diff --git a/src/core/plugin.hpp b/src/core/plugin.hpp index f692e91..f0c14dc 100644 --- a/src/core/plugin.hpp +++ b/src/core/plugin.hpp @@ -18,14 +18,12 @@ public: virtual QString name() { return QString(); } virtual QList dependencies() { return {}; } virtual bool applies() { return true; } - virtual void preinit() {} virtual void init() {} virtual void registerTypes() {} virtual void constructGeneration(EngineGeneration& /*unused*/) {} // NOLINT virtual void onReload() {} static void registerPlugin(QsEnginePlugin& plugin); - static void preinitPluginsOnly(); static void initPlugins(); static void runConstructGeneration(EngineGeneration& generation); static void runOnReload(); diff --git a/src/crash/handler.cpp b/src/crash/handler.cpp index 33506a6..8f37085 100644 --- a/src/crash/handler.cpp +++ b/src/crash/handler.cpp @@ -5,11 +5,9 @@ #include #include #include -#include #include #include -#include #include #include #include @@ -60,12 +58,6 @@ void signalHandler( siginfo_t* /*info*/, // NOLINT (misc-include-cleaner) void* /*context*/ ) { - // NOLINTBEGIN (misc-include-cleaner) - sigset_t set; - sigfillset(&set); - sigprocmask(SIG_UNBLOCK, &set, nullptr); - // NOLINTEND - if (CrashInfo::INSTANCE.traceFd != -1) { auto traceBuffer = std::array(); auto frameCount = cpptrace::safe_generate_raw_trace(traceBuffer.data(), traceBuffer.size(), 1); @@ -87,9 +79,13 @@ void signalHandler( fail:; } - // TODO: coredump fork and crash reporter remain as zombies, fix auto coredumpPid = fork(); if (coredumpPid == 0) { + // NOLINTBEGIN (misc-include-cleaner) + sigset_t set; + sigfillset(&set); + sigprocmask(SIG_UNBLOCK, &set, nullptr); + // NOLINTEND raise(sig); _exit(-1); } @@ -135,6 +131,7 @@ void signalHandler( perror("Failed to fork and launch crash reporter.\n"); _exit(-1); } else if (pid == 0) { + // dup to remove CLOEXEC auto dumpFdStr = std::array(); auto logFdStr = std::array(); @@ -158,21 +155,6 @@ void signalHandler( } } -void handleCppTerminate() { - if (auto ptr = std::current_exception()) { - try { - std::rethrow_exception(ptr); - } catch (std::exception& e) { - qFatal().nospace() << "Terminate called with C++ exception (" - << cpptrace::demangle(typeid(e).name()).data() << "): " << e.what(); - } catch (...) { - qFatal() << "Terminate called with non exception object"; - } - } - - qFatal() << "Terminate called without active C++ exception"; -} - } // namespace void CrashHandler::init() { @@ -221,8 +203,6 @@ void CrashHandler::init() { // NOLINTEND (misc-include-cleaner) - std::set_terminate(&handleCppTerminate); - qCInfo(logCrashHandler) << "Crash handler initialized."; } diff --git a/src/crash/main.cpp b/src/crash/main.cpp index 6533b43..30cf94d 100644 --- a/src/crash/main.cpp +++ b/src/crash/main.cpp @@ -25,7 +25,6 @@ #include "../core/logging.hpp" #include "../core/logging_p.hpp" #include "../core/paths.hpp" -#include "../core/plugin.hpp" #include "../core/ringbuf.hpp" #include "interface.hpp" @@ -239,9 +238,6 @@ void qsCheckCrash(int argc, char** argv) { qCInfo(logCrashReporter) << "Starting crash reporter..."; - // Required platform compatibility hooks - QsEnginePlugin::preinitPluginsOnly(); - recordCrashInfo(crashDir, info.instance); auto gui = CrashReporterGui(crashDir.path(), crashProc); diff --git a/src/wayland/buffer/dmabuf.cpp b/src/wayland/buffer/dmabuf.cpp index 47462fb..ed9dbeb 100644 --- a/src/wayland/buffer/dmabuf.cpp +++ b/src/wayland/buffer/dmabuf.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include diff --git a/src/wayland/init.cpp b/src/wayland/init.cpp index 579e42a..790cebb 100644 --- a/src/wayland/init.cpp +++ b/src/wayland/init.cpp @@ -33,9 +33,8 @@ class WaylandPlugin: public QsEnginePlugin { return isWayland; } - void preinit() override { installWlProxySafeDeref(); } - void init() override { + installWlProxySafeDeref(); installPlatformMenuHook(); installPopupPositioner(); }