From b7c513c05fb1c0381b2a45f8fd58cc90719d3686 Mon Sep 17 00:00:00 2001 From: Dan Nguyen Date: Sun, 17 Mar 2024 07:09:57 +0700 Subject: [PATCH] ISSUE: Service is crashed after disconnecting ROOT CAUSE: When disconnecting service, m_logworker is deleted in thread which does not have affinity with m_logworker. The time m_logworker is deleted, it may be used by m_logthread and make the service crashed ACTION: Connect signal finished() of m_logthread to deleteLater() slot of m_logworker to safety delete it. --- client/platforms/windows/daemon/windowstunnelservice.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/platforms/windows/daemon/windowstunnelservice.cpp b/client/platforms/windows/daemon/windowstunnelservice.cpp index 37f81f26..8d2e08b6 100644 --- a/client/platforms/windows/daemon/windowstunnelservice.cpp +++ b/client/platforms/windows/daemon/windowstunnelservice.cpp @@ -58,7 +58,6 @@ void WindowsTunnelService::stop() { if (m_logworker) { m_logthread.quit(); m_logthread.wait(); - delete m_logworker; m_logworker = nullptr; } } @@ -104,6 +103,7 @@ bool WindowsTunnelService::start(const QString& configData) { m_logworker = new WindowsTunnelLogger(WindowsCommons::tunnelLogFile()); m_logworker->moveToThread(&m_logthread); + connect(&m_logthread, &QThread::finished, m_logworker, &QObject::deleteLater); m_logthread.start(); SC_HANDLE scm = (SC_HANDLE)m_scm;