diff --git a/interfaces/innerkits/backtrace/include/backtrace_local.h b/interfaces/innerkits/backtrace/include/backtrace_local.h index 4dda464ea46e36431c97cf26a652f117884227ac..436117b60a7fad680987c5a481d83f996bde8572 100644 --- a/interfaces/innerkits/backtrace/include/backtrace_local.h +++ b/interfaces/innerkits/backtrace/include/backtrace_local.h @@ -20,10 +20,9 @@ #include #include -#include "dfx_define.h" - namespace OHOS { namespace HiviewDFX { +static const int DEFAULT_MAX_FRAME_NUM = 256; /** * @brief Get a thread of backtrace string by specify tid * diff --git a/interfaces/innerkits/signal_handler/BUILD.gn b/interfaces/innerkits/signal_handler/BUILD.gn index 408db3a0f0a8bec5a77e56d935892f4ab38e1ffd..221d3785eca6669ec286b4ee8941d90e95ce0364 100644 --- a/interfaces/innerkits/signal_handler/BUILD.gn +++ b/interfaces/innerkits/signal_handler/BUILD.gn @@ -13,38 +13,6 @@ import("//base/hiviewdfx/faultloggerd/faultloggerd.gni") -declare_args() { - dfxsignalhandler_use_flto = false -} - -template("lib_dfxsignalhandler_template") { - __use_flto = invoker.dfxsignalhandler_use_flto - __inherited_configs = invoker.dfxsignalhandler_inherited_config - if (defined(invoker.configs)) { - __static_sighandler_config = invoker.configs - } else { - __static_sighandler_config = [] - } - if (!defined(ohos_lite)) { - static_library(target_name) { - cflags = [ "-DDFX_SIGNAL_LIBC" ] - if (!__use_flto) { - cflags_c = [ "-fno-lto" ] - } - - sources = [ - "$faultloggerd_path/common/cutil/dfx_cutil.c", - "dfx_signal_handler.c", - "dfx_signalhandler_exception.c", - "musl_log.c", - ] - configs -= __inherited_configs - configs += __static_sighandler_config - configs += [ "//build/config/compiler:compiler" ] - } - } -} - if (defined(ohos_lite)) { shared_library("dfx_signalhandler") { defines = [ @@ -76,25 +44,6 @@ if (defined(ohos_lite)) { ] } } else { - inherited_configs = [ - "//build/config/compiler:afdo", - "//build/config/compiler:afdo_optimize_size", - "//build/config/compiler:compiler", - "//build/config/compiler:compiler_arm_fpu", - "//build/config/compiler:compiler_arm_thumb", - "//build/config/compiler:chromium_code", - "//build/config/compiler:default_include_dirs", - "//build/config/compiler:default_optimization", - "//build/config/compiler:default_stack_frames", - "//build/config/compiler:default_symbols", - "//build/config/compiler:export_dynamic", - "//build/config/compiler:no_exceptions", - "//build/config/compiler:no_rtti", - "//build/config/compiler:runtime_library", - "//build/config/compiler:thin_archive", - "//build/config/sanitizers:default_sanitizer_flags", - ] - config("dfx_signal_handler_config") { visibility = [ "*:*" ] include_dirs = [ @@ -103,38 +52,6 @@ if (defined(ohos_lite)) { ] } - config("static_sighandler_config") { - include_dirs = [ - "include", - "$faultloggerd_common_path/cutil", - "$faultloggerd_common_path/dfxlog", - "$faultloggerd_interfaces_path/common", - ] - - defines = [] - configs = [] - if (is_posix) { - configs += [ "//build/config/posix:runtime_library" ] - } - - cflags_cc = [] - libs = [] - - defines = [ - "__GNU_SOURCE=1", # Necessary for clone(). - "CHROMIUM_CXX_TWEAK_INLINES", # Saves binary size. - ] - - defines += [ - "__MUSL__", - "_LIBCPP_HAS_MUSL_LIBC", - "__BUILD_LINUX_WITH_CLANG", - "ENABLE_SIGHAND_MUSL_LOG", - ] - - ldflags = [ "-nostdlib" ] - } - ohos_shared_library("dfx_signalhandler") { branch_protector_ret = "pac_ret" public_configs = [ @@ -142,13 +59,16 @@ if (defined(ohos_lite)) { "$faultloggerd_common_path/build:coverage_flags", ] include_dirs = [ + "include", "$faultloggerd_common_path/cutil", "$faultloggerd_common_path/dfxlog", + "$faultloggerd_interfaces_path/common", ] defines = [ "DFX_LOG_HILOG_BASE" ] version_script = "libdfx_signalhandler.map" sources = [ "dfx_dumprequest.c", + "dfx_signal_handler.c", "dfx_signalhandler_exception.c", ] @@ -176,15 +96,4 @@ if (defined(ohos_lite)) { subsystem_name = "hiviewdfx" kernel_permission_path = "./encaps.json" } - - lib_dfxsignalhandler_template("dfxsignalhandler") { - dfxsignalhandler_use_flto = true - dfxsignalhandler_inherited_config = inherited_configs - configs = [ ":static_sighandler_config" ] - } - lib_dfxsignalhandler_template("dfxsignalhandler_noflto") { - dfxsignalhandler_use_flto = false - dfxsignalhandler_inherited_config = inherited_configs - configs = [ ":static_sighandler_config" ] - } } diff --git a/interfaces/innerkits/signal_handler/dfx_signal_handler.c b/interfaces/innerkits/signal_handler/dfx_signal_handler.c index ed6c2f2371e548914feecf505ec9d461d0ca7a19..838b8c9d967e2bb9edaf1ff03235efb727af39dc 100644 --- a/interfaces/innerkits/signal_handler/dfx_signal_handler.c +++ b/interfaces/innerkits/signal_handler/dfx_signal_handler.c @@ -88,12 +88,10 @@ #define NUMBER_SIXTYFOUR 64 #define INHERITABLE_OFFSET 32 -#ifndef __MUSL__ void __attribute__((constructor)) InitHandler(void) { DFX_InstallSignalHandler(); } -#endif static struct ProcessDumpRequest g_request; static pthread_mutex_t g_signalHandlerMutex = PTHREAD_MUTEX_INITIALIZER; @@ -101,8 +99,6 @@ static pthread_key_t g_crashObjKey; static uint64_t g_crashLogConfig = 0; static bool g_crashObjInit = false; static BOOL g_hasInit = FALSE; -static const int SIGNALHANDLER_TIMEOUT = 10000; // 10000 us -static const int ALARM_TIME_S = 10; static int g_prevHandledSignal = SIGDUMP; static struct sigaction g_oldSigactionList[NSIG] = {}; static char g_appRunningId[MAX_APP_RUNNING_UNIQUE_ID_LEN]; @@ -317,20 +313,6 @@ static const int SIGCHAIN_CRASH_SIGNAL_LIST[] = { SIGSEGV, SIGSTKFLT, SIGSYS, SIGTRAP }; -static bool IsMainThread(void) -{ - if (syscall(SYS_getpid) == 1) { - if (syscall(SYS_gettid) == 1) { - return true; - } - } else { - if (syscall(SYS_getpid) == syscall(SYS_gettid)) { - return true; - } - } - return false; -} - static void ResetAndRethrowSignalIfNeed(int signo, siginfo_t *si) { if (IsDumpSignal(signo)) { diff --git a/interfaces/innerkits/signal_handler/libdfx_signalhandler.map b/interfaces/innerkits/signal_handler/libdfx_signalhandler.map index 3fe234276225e605012902a8071860c8caf83ced..ec017000e293147bd60616d0d02dd5d00bb1c376 100644 --- a/interfaces/innerkits/signal_handler/libdfx_signalhandler.map +++ b/interfaces/innerkits/signal_handler/libdfx_signalhandler.map @@ -2,6 +2,13 @@ global: extern "C" { DfxDumpRequest; + SetThreadInfoCallback; + DFX_InstallSignalHandler; + SetAsyncStackCallbackFunc; + DFX_SetAppRunningUniqueId; + DFX_SetCrashObj; + DFX_ResetCrashObj; + DFX_SetCrashLogConfig; }; local: *; diff --git a/test/moduletest/BUILD.gn b/test/moduletest/BUILD.gn index e3f94eb9a8418dae544886ba200fd9e39bcb600a..35c4ff0d584bb79cc61ffc2eb1d63a44f6d85669 100644 --- a/test/moduletest/BUILD.gn +++ b/test/moduletest/BUILD.gn @@ -61,9 +61,9 @@ if (defined(ohos_lite)) { "$faultloggerd_path/common/build:coverage_flags", ] deps = [ + "$faultloggerd_path/common/dfxutil:dfx_util", "$faultloggerd_path/interfaces/innerkits/faultloggerd_client:libfaultloggerd", "$faultloggerd_path/test/utils:dfx_test_util", - "$faultloggerd_path/common/dfxutil:dfx_util", ] external_deps = [ "c_utils:utils", diff --git a/test/systemtest/BUILD.gn b/test/systemtest/BUILD.gn index ff45b400a4d755ca1554ff49bb0a0c1f279ab5a1..0ae11c3e8561df8997baaf79e98c9f22b61db580 100644 --- a/test/systemtest/BUILD.gn +++ b/test/systemtest/BUILD.gn @@ -42,10 +42,10 @@ if (defined(ohos_lite)) { deps = [ "$faultloggerd_common_path/dfxutil:dfx_util", + "$faultloggerd_interfaces_path/innerkits/faultloggerd_client:libfaultloggerd", "$faultloggerd_path/interfaces/innerkits/dump_catcher:libdfx_dumpcatcher", "$faultloggerd_path/interfaces/innerkits/procinfo:libdfx_procinfo", "$faultloggerd_path/test/utils:dfx_test_util", - "$faultloggerd_interfaces_path/innerkits/faultloggerd_client:libfaultloggerd", ] external_deps = [ "hilog_lite:hilog_shared" ] @@ -91,13 +91,13 @@ if (defined(ohos_lite)) { ] deps = [ + "$faultloggerd_interfaces_path/innerkits/faultloggerd_client:libfaultloggerd", "$faultloggerd_path/common/dfxutil:dfx_util", "$faultloggerd_path/interfaces/innerkits/dump_catcher:libdfx_dumpcatcher", "$faultloggerd_path/interfaces/innerkits/procinfo:libdfx_procinfo", "$faultloggerd_path/test/utils:dfx_test_util", "$faultloggerd_path/tools/crasher_c:crasher_c", "$faultloggerd_path/tools/crasher_cpp:crasher_cpp", - "$faultloggerd_interfaces_path/innerkits/faultloggerd_client:libfaultloggerd", ] if (support_jsapi) { deps += [ "$faultloggerd_path/test/resource:FaultloggerdJsTest" ] diff --git a/test/unittest/local_handler/BUILD.gn b/test/unittest/local_handler/BUILD.gn index da694d5b751ac0a979a86f365d285423c10cb678..861de2da7c6b66d9e84097e29bfcb0046c6a5584 100644 --- a/test/unittest/local_handler/BUILD.gn +++ b/test/unittest/local_handler/BUILD.gn @@ -51,8 +51,8 @@ if (defined(ohos_lite)) { "$faultloggerd_frameworks_path/localhandler:dfx_local_handler_src", "$faultloggerd_interfaces_path/innerkits/faultloggerd_client:libfaultloggerd", "$faultloggerd_path/common/cutil:dfx_cutil", - "$faultloggerd_path/test/utils:dfx_test_util", "$faultloggerd_path/common/dfxutil:dfx_util", + "$faultloggerd_path/test/utils:dfx_test_util", ] external_deps = [ diff --git a/tools/dump_catcher/BUILD.gn b/tools/dump_catcher/BUILD.gn index 55ad7715c6bf1720fbc06aa8653e3e8d371f7226..d21642bce464f427a81812d1cc4d1826ace33595 100644 --- a/tools/dump_catcher/BUILD.gn +++ b/tools/dump_catcher/BUILD.gn @@ -66,10 +66,10 @@ if (defined(ohos_lite)) { deps = [ "$faultloggerd_frameworks_path/localhandler:dfx_local_handler_src", + "$faultloggerd_interfaces_path/innerkits/faultloggerd_client:libfaultloggerd", "$faultloggerd_path/common/dfxlog:dfx_hilog", "$faultloggerd_path/common/dfxutil:dfx_util", "$faultloggerd_path/interfaces/innerkits/dump_catcher:libdfx_dumpcatcher", - "$faultloggerd_interfaces_path/innerkits/faultloggerd_client:libfaultloggerd", ] external_deps = [ diff --git a/tools/process_dump/BUILD.gn b/tools/process_dump/BUILD.gn index 45b6dfdabf81805044410e994057a71ae2ba55bb..d85b42342d8b367f4f1720786c44ab3d3abb1330 100644 --- a/tools/process_dump/BUILD.gn +++ b/tools/process_dump/BUILD.gn @@ -14,8 +14,8 @@ import("//base/hiviewdfx/faultloggerd/faultloggerd.gni") processdump_sources = [ - "coredump/dfx_coredump_writer.cpp", "coredump/dfx_coredump_service.cpp", + "coredump/dfx_coredump_writer.cpp", "dfx_buffer_writer.cpp", "dfx_process.cpp", "dfx_thread.cpp",