From e7df624f84c91f5d77747db432109c98a480f033 Mon Sep 17 00:00:00 2001 From: Zhou Shihui Date: Tue, 9 Jul 2024 10:23:52 +0800 Subject: [PATCH] =?UTF-8?q?installs=E4=BD=BF=E7=94=A8=E9=9D=9Efork?= =?UTF-8?q?=E6=8A=93=E6=A0=88=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Zhou Shihui --- appexecfwk.gni | 6 ++++++ bundle.json | 1 + services/bundlemgr/BUILD.gn | 5 +++++ .../include/installd/installd_service.h | 2 -- .../src/installd/installd_service.cpp | 20 +++++++++---------- .../test/mock/include/installd_service.h | 2 -- .../test/mock/src/installd_service.cpp | 20 +++++++++---------- 7 files changed, 32 insertions(+), 24 deletions(-) diff --git a/appexecfwk.gni b/appexecfwk.gni index 87c352a467..70f91e4a44 100644 --- a/appexecfwk.gni +++ b/appexecfwk.gni @@ -70,6 +70,7 @@ declare_args() { bms_device_info_manager_part_enabled = true app_domain_verify_enabled = true device_usage_statistics_enabled = true + dfx_sigdump_handler_enabled = true if (defined(global_parts_info) && !defined(global_parts_info.resourceschedule_device_usage_statistics)) { @@ -181,6 +182,11 @@ declare_args() { !defined(global_parts_info.bundlemanager_app_domain_verify)) { app_domain_verify_enabled = false } + + if (defined(global_parts_info) && + !defined(global_parts_info.hiviewdfx_faultloggerd)) { + dfx_sigdump_handler_enabled = false + } } print("bundle_framework_power_mgr_enable = " + diff --git a/bundle.json b/bundle.json index 392da864a4..b4a59f6d66 100644 --- a/bundle.json +++ b/bundle.json @@ -52,6 +52,7 @@ "display_manager", "ecological_rule_manager", "eventhandler", + "faultloggerd", "ffrt", "hisysevent", "hitrace", diff --git a/services/bundlemgr/BUILD.gn b/services/bundlemgr/BUILD.gn index 1309f3919a..6c9850a768 100644 --- a/services/bundlemgr/BUILD.gn +++ b/services/bundlemgr/BUILD.gn @@ -508,6 +508,11 @@ ohos_shared_library("installs") { cflags += [ "-DWITH_SELINUX" ] } + if (dfx_sigdump_handler_enabled) { + external_deps += [ "faultloggerd:dfx_sigdump_handler" ] + defines += [ "DFX_SIGDUMP_HANDLER_ENABLE" ] + } + install_enable = true subsystem_name = "bundlemanager" part_name = "bundle_framework" diff --git a/services/bundlemgr/include/installd/installd_service.h b/services/bundlemgr/include/installd/installd_service.h index a5dfb4ee1a..e65ed41a87 100644 --- a/services/bundlemgr/include/installd/installd_service.h +++ b/services/bundlemgr/include/installd/installd_service.h @@ -69,8 +69,6 @@ private: */ bool InitDir(const std::string &path); - void DisableDfx(); - private: bool isReady_ = false; sptr hostImpl_; diff --git a/services/bundlemgr/src/installd/installd_service.cpp b/services/bundlemgr/src/installd/installd_service.cpp index f307fea30a..90259995dd 100644 --- a/services/bundlemgr/src/installd/installd_service.cpp +++ b/services/bundlemgr/src/installd/installd_service.cpp @@ -16,7 +16,6 @@ #include "installd/installd_service.h" #include -#include #include #include #include @@ -30,13 +29,16 @@ #include "system_ability_definition.h" #include "system_ability_helper.h" +#ifdef DFX_SIGDUMP_HANDLER_ENABLE +#include "dfx_sigdump_handler.h" +#endif + using namespace std::chrono_literals; namespace OHOS { namespace AppExecFwk { namespace { constexpr unsigned int INSTALLD_UMASK = 0000; -constexpr int32_t DFX_SIGNAL = 35; } REGISTER_SYSTEM_ABILITY_BY_ID(InstalldService, INSTALLD_SERVICE_ID, true); @@ -63,11 +65,17 @@ void InstalldService::OnStart() if (!Publish(hostImpl_)) { LOG_E(BMS_TAG_INSTALLD, "Publish failed"); } +#ifdef DFX_SIGDUMP_HANDLER_ENABLE + InitSigDumpHandler(); +#endif } void InstalldService::OnStop() { Stop(); +#ifdef DFX_SIGDUMP_HANDLER_ENABLE + DeinitSigDumpHandler(); +#endif LOG_I(BMS_TAG_INSTALLD, "installd OnStop"); } @@ -128,13 +136,5 @@ void InstalldService::Stop() isReady_ = false; LOG_I(BMS_TAG_INSTALLD, "installd service stop successfully"); } - -__attribute__((constructor)) void InstalldService::DisableDfx() -{ - sigset_t set; - sigemptyset(&set); - sigaddset(&set, DFX_SIGNAL); - sigprocmask(SIG_BLOCK, &set, NULL); -} } // namespace AppExecFwk } // namespace OHOS \ No newline at end of file diff --git a/services/bundlemgr/test/mock/include/installd_service.h b/services/bundlemgr/test/mock/include/installd_service.h index 4e8cd96c46..48995150af 100644 --- a/services/bundlemgr/test/mock/include/installd_service.h +++ b/services/bundlemgr/test/mock/include/installd_service.h @@ -69,8 +69,6 @@ private: */ bool InitDir(const std::string &path); - void DisableDfx(); - private: bool isReady_ = false; sptr hostImpl_; diff --git a/services/bundlemgr/test/mock/src/installd_service.cpp b/services/bundlemgr/test/mock/src/installd_service.cpp index 8ce37ea114..a058ea38d4 100644 --- a/services/bundlemgr/test/mock/src/installd_service.cpp +++ b/services/bundlemgr/test/mock/src/installd_service.cpp @@ -16,7 +16,6 @@ #include "installd/installd_service.h" #include -#include #include #include #include @@ -29,13 +28,16 @@ #include "system_ability_definition.h" #include "system_ability_helper.h" +#ifdef DFX_SIGDUMP_HANDLER_ENABLE +#include "dfx_sigdump_handler.h" +#endif + using namespace std::chrono_literals; namespace OHOS { namespace AppExecFwk { namespace { constexpr unsigned int INSTALLD_UMASK = 0000; -constexpr int32_t DFX_SIGNAL = 35; } InstalldService::InstalldService() : SystemAbility(INSTALLD_SERVICE_ID, true) { @@ -54,11 +56,17 @@ void InstalldService::OnStart() if (!Publish(hostImpl_)) { APP_LOGE("Publish failed"); } +#ifdef DFX_SIGDUMP_HANDLER_ENABLE + InitSigDumpHandler(); +#endif } void InstalldService::OnStop() { Stop(); +#ifdef DFX_SIGDUMP_HANDLER_ENABLE + DeinitSigDumpHandler(); +#endif APP_LOGI("installd OnStop"); } @@ -122,13 +130,5 @@ void InstalldService::Stop() isReady_ = false; APP_LOGI("installd service stop successfully"); } - -__attribute__((constructor)) void InstalldService::DisableDfx() -{ - sigset_t set; - sigemptyset(&set); - sigaddset(&set, DFX_SIGNAL); - sigprocmask(SIG_BLOCK, &set, NULL); -} } // namespace AppExecFwk } // namespace OHOS -- Gitee