From 1c68f19ce7b5c43a5a69128a6d3eab38051ddbac Mon Sep 17 00:00:00 2001 From: zhaifenghw Date: Sat, 28 Aug 2021 07:31:05 +0000 Subject: [PATCH] workaround for sigabrt in libuv when starting up Signed-off-by: zhaifenghw --- src/common/session.cpp | 14 +++----------- src/daemon/main.cpp | 5 ++++- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/common/session.cpp b/src/common/session.cpp index 724c8fe6..7c74a6a5 100644 --- a/src/common/session.cpp +++ b/src/common/session.cpp @@ -18,7 +18,9 @@ namespace Hdc { HdcSessionBase::HdcSessionBase(bool serverOrDaemonIn) { - // server/daemon common initialize + // server/daemon common initialization code + string threadNum = std::to_string(SIZE_THREAD_POOL); + uv_os_setenv("UV_THREADPOOL_SIZE", threadNum.c_str()); uv_loop_init(&loopMain); WRITE_LOG(LOG_DEBUG, "loopMain init"); uv_rwlock_init(&mainAsync); @@ -28,16 +30,6 @@ HdcSessionBase::HdcSessionBase(bool serverOrDaemonIn) ctxUSB = nullptr; wantRestart = false; - // server/daemon common set - string threadNum = std::to_string(SIZE_THREAD_POOL); - uv_os_setenv("UV_THREADPOOL_SIZE", threadNum.c_str()); -#ifndef _WIN32 - // global signal detect - umask(0); - signal(SIGPIPE, SIG_IGN); // SIG_DFL - // prevent zoombie process, let 'init' process do process's clear - signal(SIGCHLD, SIG_IGN); -#endif #ifdef HDC_HOST if (serverOrDaemon) { libusb_init((libusb_context **)&ctxUSB); diff --git a/src/daemon/main.cpp b/src/daemon/main.cpp index 542908e9..6971a2d4 100644 --- a/src/daemon/main.cpp +++ b/src/daemon/main.cpp @@ -36,7 +36,7 @@ bool ForkChildCheck(int argc, const char *argv[]) // hdcd -fork #fork char modeSet[BUF_SIZE_TINY] = ""; Base::GetHdcProperty("persist.hdc.mode", modeSet, BUF_SIZE_TINY); - Base::PrintMessage("Background mode, persist.hdc.mode:[%s]", modeSet); + Base::PrintMessage("Background mode, persist.hdc.mode"); string workMode = modeSet; workMode = Base::Trim(workMode); if (workMode == CMDSTR_TMODE_TCP) { @@ -176,6 +176,9 @@ int main(int argc, const char *argv[]) return BackgroundRun(); } NeedDropPriv(); + umask(0); + signal(SIGPIPE, SIG_IGN); + signal(SIGCHLD, SIG_IGN); WRITE_LOG(LOG_DEBUG, "HdcDaemon main run"); HdcDaemon daemon(false); daemon.InitMod(g_enableTcp, g_enableUsb); -- Gitee