From 36b36314cf233e156835d08218a2bd059a51fffa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A8=8A=E6=99=AF=E4=B9=90?= Date: Tue, 10 Jun 2025 11:44:52 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=81=B0=E5=BA=A6trace?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 樊景乐 --- appspawn.gni | 1 + modules/common/BUILD.gn | 6 +++++ modules/common/appspawn_common.c | 21 +++++++++++++++ test/mock/app_spawn_stub.h | 5 ++++ test/unittest/app_spawn_client_test/BUILD.gn | 6 +++++ .../unittest/app_spawn_standard_test/BUILD.gn | 6 +++++ .../app_spawn_common_test.cpp | 26 +++++++++++++++++++ 7 files changed, 71 insertions(+) diff --git a/appspawn.gni b/appspawn.gni index 3ae081e4..e807264b 100644 --- a/appspawn.gni +++ b/appspawn.gni @@ -37,6 +37,7 @@ declare_args() { appspawn_allow_internet_permission = false appspawn_custom_sandbox = false appspawn_support_local_debugger = false + appspawn_hitrace_option = true } if (!defined(global_parts_info) || diff --git a/modules/common/BUILD.gn b/modules/common/BUILD.gn index 94ec1b57..a8d347dc 100644 --- a/modules/common/BUILD.gn +++ b/modules/common/BUILD.gn @@ -50,6 +50,12 @@ ohos_shared_library("appspawn_common") { "init:libbegetutil", "netmanager_base:netsys_client", ] + + if (appspawn_hitrace_option == true) { + defines += [ "APPSPAWN_HITRACE_OPTION" ] + external_deps += [ "hitrace:libhitrace_option" ] + } + if (build_selinux) { defines += [ "WITH_SELINUX" ] external_deps += [ diff --git a/modules/common/appspawn_common.c b/modules/common/appspawn_common.c index 844f2833..8c08c52f 100644 --- a/modules/common/appspawn_common.c +++ b/modules/common/appspawn_common.c @@ -47,6 +47,10 @@ #include "parameter.h" #include "securec.h" +#ifdef APPSPAWN_HITRACE_OPTION +#include "hitrace_option/hitrace_option.h" +#endif + #ifdef CODE_SIGNATURE_ENABLE // for xpm #include "code_sign_attr_utils.h" #endif @@ -472,8 +476,25 @@ static void SpawnLoadSilk(const AppSpawnMgr *content, const AppSpawningCtx *prop LoadSilkLibrary(processName); } +#ifdef APPSPAWN_HITRACE_OPTION +APPSPAWN_STATIC void FilterAppspawnTrace(AppSpawningCtx *property) +{ + const char *processName = GetProcessName(property); + if (processName != NULL) { + pid_t pid = getpid(); + APPSPAWN_LOGV("processName: %{public}s pid: %{public}d", processName, pid); + FilterAppTrace(processName, pid); + } else { + APPSPAWN_LOGV("processName is NULL"); + } +} +#endif + static int SpawnSetProperties(AppSpawnMgr *content, AppSpawningCtx *property) { +#ifdef APPSPAWN_HITRACE_OPTION + FilterAppspawnTrace(property); +#endif APPSPAWN_LOGV("Spawning: set child property"); SpawnLoadSilk(content, property); (void)umask(DEFAULT_UMASK); diff --git a/test/mock/app_spawn_stub.h b/test/mock/app_spawn_stub.h index 4aaced71..7ba69bc7 100644 --- a/test/mock/app_spawn_stub.h +++ b/test/mock/app_spawn_stub.h @@ -116,6 +116,11 @@ void RunAppSandbox(const char *ptyName); HOOK_MGR *GetAppSpawnHookMgr(void); int SpawnKickDogStart(AppSpawnMgr *mgrContent); int AddPermissionToEncaps(cJSON *extInfoJson, cJSON *encaps, uint32_t *permissionCount); + +#ifdef APPSPAWN_HITRACE_OPTION +void FilterAppspawnTrace(AppSpawningCtx *property); +#endif + #define STUB_NEED_CHECK 0x01 typedef int (*ExecvFunc)(const char *pathname, char *const argv[]); enum { diff --git a/test/unittest/app_spawn_client_test/BUILD.gn b/test/unittest/app_spawn_client_test/BUILD.gn index 7d874cfa..136553b5 100644 --- a/test/unittest/app_spawn_client_test/BUILD.gn +++ b/test/unittest/app_spawn_client_test/BUILD.gn @@ -92,6 +92,12 @@ ohos_unittest("AppSpawn_client_ut") { "hitrace:hitrace_meter", "init:libbegetutil", ] + + if (appspawn_hitrace_option == true) { + defines += [ "APPSPAWN_HITRACE_OPTION" ] + external_deps += [ "hitrace:libhitrace_option" ] + } + if (enable_appspawn_dump_catcher) { external_deps += [ "faultloggerd:libdfx_dumpcatcher" ] } diff --git a/test/unittest/app_spawn_standard_test/BUILD.gn b/test/unittest/app_spawn_standard_test/BUILD.gn index 92ece3b5..3479dfde 100644 --- a/test/unittest/app_spawn_standard_test/BUILD.gn +++ b/test/unittest/app_spawn_standard_test/BUILD.gn @@ -177,6 +177,12 @@ ohos_unittest("AppSpawn_ut") { "os_account:os_account_innerkits", "resource_management:global_resmgr", ] + + if (appspawn_hitrace_option == true) { + defines += [ "APPSPAWN_HITRACE_OPTION" ] + external_deps += [ "hitrace:libhitrace_option" ] + } + if (enable_appspawn_dump_catcher) { external_deps += [ "faultloggerd:libdfx_dumpcatcher" ] } diff --git a/test/unittest/app_spawn_standard_test/app_spawn_common_test.cpp b/test/unittest/app_spawn_standard_test/app_spawn_common_test.cpp index e10b6d13..42dd4c24 100644 --- a/test/unittest/app_spawn_standard_test/app_spawn_common_test.cpp +++ b/test/unittest/app_spawn_standard_test/app_spawn_common_test.cpp @@ -812,4 +812,30 @@ HWTEST_F(AppSpawnCommonTest, App_Spawn_SetIsolateDir, TestSize.Level0) ASSERT_EQ(ret, 0); } +#ifdef APPSPAWN_HITRACE_OPTION +HWTEST_F(AppSpawnCommonTest, App_Spawn_SetIsolateDir, TestSize.Level0) +{ + AppSpawnClientHandle clientHandle = nullptr; + AppSpawnReqMsgHandle reqHandle = 0; + AppSpawningCtx *property = nullptr; + int ret = -1; + FilterAppspawnTrace(property); + EXPECT_EQ(property, nullptr); + + do { + ret = AppSpawnClientInit(APPSPAWN_SERVER_NAME, &clientHandle); + APPSPAWN_CHECK(ret == 0, break, "Failed to create reqMgr %{public}s", APPSPAWN_SERVER_NAME); + reqHandle = g_testHelper.CreateMsg(clientHandle, MSG_APP_SPAWN, 0); + APPSPAWN_CHECK(reqHandle != INVALID_REQ_HANDLE, break, + "Failed to create req %{public}s", APPSPAWN_SERVER_NAME); + property = g_testHelper.GetAppProperty(clientHandle, reqHandle); + APPSPAWN_CHECK_ONLY_EXPER(property != nullptr, break); + FilterAppspawnTrace(property); + } while (0); + + DeleteAppSpawningCtx(property); + AppSpawnClientDestroy(clientHandle); +} +#endif + } // namespace OHOS -- Gitee From 117da8f7df496945e6709b2b32d787ae4298eeb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A8=8A=E6=99=AF=E4=B9=90?= Date: Wed, 11 Jun 2025 06:24:51 +0000 Subject: [PATCH 2/2] update modules/common/appspawn_common.c. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 樊景乐 --- modules/common/appspawn_common.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/common/appspawn_common.c b/modules/common/appspawn_common.c index 8c08c52f..b1d4c1c0 100644 --- a/modules/common/appspawn_common.c +++ b/modules/common/appspawn_common.c @@ -482,16 +482,17 @@ APPSPAWN_STATIC void FilterAppspawnTrace(AppSpawningCtx *property) const char *processName = GetProcessName(property); if (processName != NULL) { pid_t pid = getpid(); - APPSPAWN_LOGV("processName: %{public}s pid: %{public}d", processName, pid); + APPSPAWN_LOGI("fanjingle AAAAA processName: %{public}s pid: %{public}d", processName, pid); FilterAppTrace(processName, pid); } else { - APPSPAWN_LOGV("processName is NULL"); + APPSPAWN_LOGI("fanjingle AAAAA processName is NULL"); } } #endif static int SpawnSetProperties(AppSpawnMgr *content, AppSpawningCtx *property) { + APPSPAWN_LOGI("fanjingle AAAAA ------"); #ifdef APPSPAWN_HITRACE_OPTION FilterAppspawnTrace(property); #endif -- Gitee