1800b99b8Sopenharmony_ci/* 2800b99b8Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 3800b99b8Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4800b99b8Sopenharmony_ci * you may not use this file except in compliance with the License. 5800b99b8Sopenharmony_ci * You may obtain a copy of the License at 6800b99b8Sopenharmony_ci * 7800b99b8Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8800b99b8Sopenharmony_ci * 9800b99b8Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10800b99b8Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11800b99b8Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12800b99b8Sopenharmony_ci * See the License for the specific language governing permissions and 13800b99b8Sopenharmony_ci * limitations under the License. 14800b99b8Sopenharmony_ci */ 15800b99b8Sopenharmony_ci 16800b99b8Sopenharmony_ci#include <ctime> 17800b99b8Sopenharmony_ci#include <gtest/gtest.h> 18800b99b8Sopenharmony_ci#include <securec.h> 19800b99b8Sopenharmony_ci#include <string> 20800b99b8Sopenharmony_ci#include <vector> 21800b99b8Sopenharmony_ci 22800b99b8Sopenharmony_ci#include "crash_exception.h" 23800b99b8Sopenharmony_ci#include "crash_exception_listener.h" 24800b99b8Sopenharmony_ci#include "dfx_errors.h" 25800b99b8Sopenharmony_ci#include "dfx_util.h" 26800b99b8Sopenharmony_ci#include "hisysevent_manager.h" 27800b99b8Sopenharmony_ci 28800b99b8Sopenharmony_ciusing namespace OHOS::HiviewDFX; 29800b99b8Sopenharmony_ciusing namespace testing::ext; 30800b99b8Sopenharmony_ciusing namespace std; 31800b99b8Sopenharmony_ci 32800b99b8Sopenharmony_cinamespace OHOS { 33800b99b8Sopenharmony_cinamespace HiviewDFX { 34800b99b8Sopenharmony_ciclass CrashExceptionTest : public testing::Test { 35800b99b8Sopenharmony_cipublic: 36800b99b8Sopenharmony_ci static void SetUpTestCase(void) {} 37800b99b8Sopenharmony_ci static void TearDownTestCase(void) {} 38800b99b8Sopenharmony_ci void SetUp() {} 39800b99b8Sopenharmony_ci void TearDown() {} 40800b99b8Sopenharmony_ci}; 41800b99b8Sopenharmony_ci 42800b99b8Sopenharmony_cistatic constexpr int32_t TEST_PROCESS_ID = 1234; 43800b99b8Sopenharmony_cistatic constexpr int32_t TEST_UID = 5678; 44800b99b8Sopenharmony_ci 45800b99b8Sopenharmony_ci/** 46800b99b8Sopenharmony_ci * @tc.name: CrashExceptionTest001 47800b99b8Sopenharmony_ci * @tc.desc: test ReportCrashException 48800b99b8Sopenharmony_ci * @tc.type: FUNC 49800b99b8Sopenharmony_ci */ 50800b99b8Sopenharmony_ciHWTEST_F(CrashExceptionTest, CrashExceptionTest001, TestSize.Level2) 51800b99b8Sopenharmony_ci{ 52800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest001: start."; 53800b99b8Sopenharmony_ci char testProcessName[] = "process_name_ptr"; 54800b99b8Sopenharmony_ci std::shared_ptr<CrashExceptionListener> crashListener = std::make_shared<CrashExceptionListener>(); 55800b99b8Sopenharmony_ci ListenerRule tagRule("RELIABILITY", "CPP_CRASH_EXCEPTION", RuleType::WHOLE_WORD); 56800b99b8Sopenharmony_ci std::vector<ListenerRule> sysRules; 57800b99b8Sopenharmony_ci sysRules.push_back(tagRule); 58800b99b8Sopenharmony_ci HiSysEventManager::AddListener(crashListener, sysRules); 59800b99b8Sopenharmony_ci crashListener->SetKeyWord(testProcessName); 60800b99b8Sopenharmony_ci ReportCrashException(testProcessName, TEST_PROCESS_ID, TEST_UID, CrashExceptionCode::CRASH_UNKNOWN); 61800b99b8Sopenharmony_ci ASSERT_TRUE(crashListener->CheckKeywordInReasons()); 62800b99b8Sopenharmony_ci HiSysEventManager::RemoveListener(crashListener); 63800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest001: end."; 64800b99b8Sopenharmony_ci} 65800b99b8Sopenharmony_ci 66800b99b8Sopenharmony_ci/** 67800b99b8Sopenharmony_ci * @tc.name: CrashExceptionTest002 68800b99b8Sopenharmony_ci * @tc.desc: test ReportCrashException, error code is success. 69800b99b8Sopenharmony_ci * @tc.type: FUNC 70800b99b8Sopenharmony_ci */ 71800b99b8Sopenharmony_ciHWTEST_F(CrashExceptionTest, CrashExceptionTest002, TestSize.Level2) 72800b99b8Sopenharmony_ci{ 73800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest002: start."; 74800b99b8Sopenharmony_ci char testProcessName[] = "process_name_ptr"; 75800b99b8Sopenharmony_ci std::shared_ptr<CrashExceptionListener> crashListener = std::make_shared<CrashExceptionListener>(); 76800b99b8Sopenharmony_ci ListenerRule tagRule("RELIABILITY", "CPP_CRASH_EXCEPTION", RuleType::WHOLE_WORD); 77800b99b8Sopenharmony_ci std::vector<ListenerRule> sysRules; 78800b99b8Sopenharmony_ci sysRules.push_back(tagRule); 79800b99b8Sopenharmony_ci HiSysEventManager::AddListener(crashListener, sysRules); 80800b99b8Sopenharmony_ci crashListener->SetKeyWord(testProcessName); 81800b99b8Sopenharmony_ci ReportCrashException(testProcessName, TEST_PROCESS_ID, TEST_UID, CrashExceptionCode::CRASH_ESUCCESS); 82800b99b8Sopenharmony_ci ASSERT_FALSE(crashListener->CheckKeywordInReasons()); 83800b99b8Sopenharmony_ci HiSysEventManager::RemoveListener(crashListener); 84800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest002: end."; 85800b99b8Sopenharmony_ci} 86800b99b8Sopenharmony_ci 87800b99b8Sopenharmony_ci/** 88800b99b8Sopenharmony_ci * @tc.name: CrashExceptionTest003 89800b99b8Sopenharmony_ci * @tc.desc: test ReportCrashException, process name length is more than 128 bytes. 90800b99b8Sopenharmony_ci * @tc.type: FUNC 91800b99b8Sopenharmony_ci */ 92800b99b8Sopenharmony_ciHWTEST_F(CrashExceptionTest, CrashExceptionTest003, TestSize.Level2) 93800b99b8Sopenharmony_ci{ 94800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest003: start."; 95800b99b8Sopenharmony_ci char testProcessName[] = "process_name_ptr_1111111111111111111111111111111111111" 96800b99b8Sopenharmony_ci "11111111111111111111111111111111111111111111111111111111111111111111111111111111" 97800b99b8Sopenharmony_ci "11111111111111111111111111111111111111111111111111111111111111111111111111111111"; 98800b99b8Sopenharmony_ci std::shared_ptr<CrashExceptionListener> crashListener = std::make_shared<CrashExceptionListener>(); 99800b99b8Sopenharmony_ci ListenerRule tagRule("RELIABILITY", "CPP_CRASH_EXCEPTION", RuleType::WHOLE_WORD); 100800b99b8Sopenharmony_ci std::vector<ListenerRule> sysRules; 101800b99b8Sopenharmony_ci sysRules.push_back(tagRule); 102800b99b8Sopenharmony_ci HiSysEventManager::AddListener(crashListener, sysRules); 103800b99b8Sopenharmony_ci crashListener->SetKeyWord(testProcessName); 104800b99b8Sopenharmony_ci ReportCrashException(testProcessName, TEST_PROCESS_ID, TEST_UID, CrashExceptionCode::CRASH_UNKNOWN); 105800b99b8Sopenharmony_ci ASSERT_FALSE(crashListener->CheckKeywordInReasons()); 106800b99b8Sopenharmony_ci HiSysEventManager::RemoveListener(crashListener); 107800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest003: end."; 108800b99b8Sopenharmony_ci} 109800b99b8Sopenharmony_ci 110800b99b8Sopenharmony_ci/** 111800b99b8Sopenharmony_ci * @tc.name: CrashExceptionTest004 112800b99b8Sopenharmony_ci * @tc.desc: test ReportCrashException 113800b99b8Sopenharmony_ci * @tc.type: FUNC 114800b99b8Sopenharmony_ci */ 115800b99b8Sopenharmony_ciHWTEST_F(CrashExceptionTest, CrashExceptionTest004, TestSize.Level2) 116800b99b8Sopenharmony_ci{ 117800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest004: start."; 118800b99b8Sopenharmony_ci std::string keyWord = "process_name_string"; 119800b99b8Sopenharmony_ci std::shared_ptr<CrashExceptionListener> crashListener = std::make_shared<CrashExceptionListener>(); 120800b99b8Sopenharmony_ci ListenerRule tagRule("RELIABILITY", "CPP_CRASH_EXCEPTION", RuleType::WHOLE_WORD); 121800b99b8Sopenharmony_ci std::vector<ListenerRule> sysRules; 122800b99b8Sopenharmony_ci sysRules.push_back(tagRule); 123800b99b8Sopenharmony_ci HiSysEventManager::AddListener(crashListener, sysRules); 124800b99b8Sopenharmony_ci crashListener->SetKeyWord(keyWord); 125800b99b8Sopenharmony_ci ReportCrashException(keyWord, TEST_PROCESS_ID, TEST_UID, CrashExceptionCode::CRASH_UNKNOWN); 126800b99b8Sopenharmony_ci ASSERT_TRUE(crashListener->CheckKeywordInReasons()); 127800b99b8Sopenharmony_ci HiSysEventManager::RemoveListener(crashListener); 128800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest004: end."; 129800b99b8Sopenharmony_ci} 130800b99b8Sopenharmony_ci 131800b99b8Sopenharmony_ci/** 132800b99b8Sopenharmony_ci * @tc.name: CrashExceptionTest005 133800b99b8Sopenharmony_ci * @tc.desc: test ReportCrashException, error code is success. 134800b99b8Sopenharmony_ci * @tc.type: FUNC 135800b99b8Sopenharmony_ci */ 136800b99b8Sopenharmony_ciHWTEST_F(CrashExceptionTest, CrashExceptionTest005, TestSize.Level2) 137800b99b8Sopenharmony_ci{ 138800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest005: start."; 139800b99b8Sopenharmony_ci std::string keyWord = "process_name_string"; 140800b99b8Sopenharmony_ci std::shared_ptr<CrashExceptionListener> crashListener = std::make_shared<CrashExceptionListener>(); 141800b99b8Sopenharmony_ci ListenerRule tagRule("RELIABILITY", "CPP_CRASH_EXCEPTION", RuleType::WHOLE_WORD); 142800b99b8Sopenharmony_ci std::vector<ListenerRule> sysRules; 143800b99b8Sopenharmony_ci sysRules.push_back(tagRule); 144800b99b8Sopenharmony_ci HiSysEventManager::AddListener(crashListener, sysRules); 145800b99b8Sopenharmony_ci crashListener->SetKeyWord(keyWord); 146800b99b8Sopenharmony_ci ReportCrashException(keyWord, TEST_PROCESS_ID, TEST_UID, CrashExceptionCode::CRASH_ESUCCESS); 147800b99b8Sopenharmony_ci ASSERT_FALSE(crashListener->CheckKeywordInReasons()); 148800b99b8Sopenharmony_ci HiSysEventManager::RemoveListener(crashListener); 149800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest005: end."; 150800b99b8Sopenharmony_ci} 151800b99b8Sopenharmony_ci 152800b99b8Sopenharmony_ci/** 153800b99b8Sopenharmony_ci * @tc.name: CrashExceptionTest006 154800b99b8Sopenharmony_ci * @tc.desc: test ReportUnwinderException 155800b99b8Sopenharmony_ci * @tc.type: FUNC 156800b99b8Sopenharmony_ci */ 157800b99b8Sopenharmony_ciHWTEST_F(CrashExceptionTest, CrashExceptionTest006, TestSize.Level2) 158800b99b8Sopenharmony_ci{ 159800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest006: start."; 160800b99b8Sopenharmony_ci std::string keyWord = "process_name_unwind"; 161800b99b8Sopenharmony_ci std::shared_ptr<CrashExceptionListener> crashListener = std::make_shared<CrashExceptionListener>(); 162800b99b8Sopenharmony_ci ListenerRule tagRule("RELIABILITY", "CPP_CRASH_EXCEPTION", RuleType::WHOLE_WORD); 163800b99b8Sopenharmony_ci std::vector<ListenerRule> sysRules; 164800b99b8Sopenharmony_ci sysRules.push_back(tagRule); 165800b99b8Sopenharmony_ci HiSysEventManager::AddListener(crashListener, sysRules); 166800b99b8Sopenharmony_ci crashListener->SetKeyWord(keyWord); 167800b99b8Sopenharmony_ci SetCrashProcInfo(keyWord, TEST_PROCESS_ID, TEST_UID); 168800b99b8Sopenharmony_ci ReportUnwinderException(UnwindErrorCode::UNW_ERROR_STEP_ARK_FRAME); 169800b99b8Sopenharmony_ci ASSERT_TRUE(crashListener->CheckKeywordInReasons()); 170800b99b8Sopenharmony_ci HiSysEventManager::RemoveListener(crashListener); 171800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest006: end."; 172800b99b8Sopenharmony_ci} 173800b99b8Sopenharmony_ci 174800b99b8Sopenharmony_ci/** 175800b99b8Sopenharmony_ci * @tc.name: CrashExceptionTest007 176800b99b8Sopenharmony_ci * @tc.desc: test ReportUnwinderException, invalid unwind error code. 177800b99b8Sopenharmony_ci * @tc.type: FUNC 178800b99b8Sopenharmony_ci */ 179800b99b8Sopenharmony_ciHWTEST_F(CrashExceptionTest, CrashExceptionTest007, TestSize.Level2) 180800b99b8Sopenharmony_ci{ 181800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest007: start."; 182800b99b8Sopenharmony_ci std::string keyWord = "process_name_unwind"; 183800b99b8Sopenharmony_ci std::shared_ptr<CrashExceptionListener> crashListener = std::make_shared<CrashExceptionListener>(); 184800b99b8Sopenharmony_ci ListenerRule tagRule("RELIABILITY", "CPP_CRASH_EXCEPTION", RuleType::WHOLE_WORD); 185800b99b8Sopenharmony_ci std::vector<ListenerRule> sysRules; 186800b99b8Sopenharmony_ci sysRules.push_back(tagRule); 187800b99b8Sopenharmony_ci HiSysEventManager::AddListener(crashListener, sysRules); 188800b99b8Sopenharmony_ci crashListener->SetKeyWord(keyWord); 189800b99b8Sopenharmony_ci SetCrashProcInfo(keyWord, TEST_PROCESS_ID, TEST_UID); 190800b99b8Sopenharmony_ci ReportUnwinderException(0); 191800b99b8Sopenharmony_ci ASSERT_FALSE(crashListener->CheckKeywordInReasons()); 192800b99b8Sopenharmony_ci HiSysEventManager::RemoveListener(crashListener); 193800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest007: end."; 194800b99b8Sopenharmony_ci} 195800b99b8Sopenharmony_ci 196800b99b8Sopenharmony_ci/** 197800b99b8Sopenharmony_ci * @tc.name: CrashExceptionTest08 198800b99b8Sopenharmony_ci * @tc.desc: test CheckFaultSummaryValid, valid Fault Summary. 199800b99b8Sopenharmony_ci * @tc.type: FUNC 200800b99b8Sopenharmony_ci */ 201800b99b8Sopenharmony_ciHWTEST_F(CrashExceptionTest, CrashExceptionTest08, TestSize.Level2) 202800b99b8Sopenharmony_ci{ 203800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest08: start."; 204800b99b8Sopenharmony_ci std::string summary = std::string("Thread name:sensors\n") + 205800b99b8Sopenharmony_ci "#00 pc 000c5738 /system/lib/ld-musl-arm.so.1(ioctl+72)(b985d2b9b22c3e542388f5803bac6a56)\n" + 206800b99b8Sopenharmony_ci "#01 pc 00007fcf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::WriteBinder(\n" + 207800b99b8Sopenharmony_ci "#02 pc 00034f35 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDriver(\n" + 208800b99b8Sopenharmony_ci "#03 pc 000350a5 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop(\n" + 209800b99b8Sopenharmony_ci "#04 pc 000363df /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::JoinThread(\n" + 210800b99b8Sopenharmony_ci "#05 pc 00010955 /system/lib/platformsdk/libsystem_ability_fwk.z.so(\n" + 211800b99b8Sopenharmony_ci "#06 pc 0000391b /system/bin/sa_main(main.cfi+1986)(c626ef160394bf644c17e6769318dc7d)\n" + 212800b99b8Sopenharmony_ci "#07 pc 00073560 /system/lib/ld-musl-arm.so.1(libc_start_main_stage2+56)(\n" + 213800b99b8Sopenharmony_ci "#08 pc 00003078 /system/bin/sa_main(_start_c+84)(c626ef160394bf644c17e6769318dc7d)\n" + 214800b99b8Sopenharmony_ci "#09 pc 0000301c /system/bin/sa_main(c626ef160394bf644c17e6769318dc7d)\n"; 215800b99b8Sopenharmony_ci ASSERT_TRUE(CheckFaultSummaryValid(summary)); 216800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest08: end."; 217800b99b8Sopenharmony_ci} 218800b99b8Sopenharmony_ci 219800b99b8Sopenharmony_ci/** 220800b99b8Sopenharmony_ci * @tc.name: CrashExceptionTest09 221800b99b8Sopenharmony_ci * @tc.desc: test CheckFaultSummaryValid, valid Fault Summary. 222800b99b8Sopenharmony_ci * @tc.type: FUNC 223800b99b8Sopenharmony_ci */ 224800b99b8Sopenharmony_ciHWTEST_F(CrashExceptionTest, CrashExceptionTest09, TestSize.Level2) 225800b99b8Sopenharmony_ci{ 226800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest09: start."; 227800b99b8Sopenharmony_ci std::string summary = std::string("Thread name:sensors\n") + 228800b99b8Sopenharmony_ci "#00 pc 000c5738 /system/lib/ld-musl-arm.so.1(ioctl+72)(b985d2b9b22c3e542388f5803bac6a56)\n" + 229800b99b8Sopenharmony_ci "#01 pc 00007fcf Not mapped\n" + 230800b99b8Sopenharmony_ci "#02 pc 00034f35 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDriver(\n" + 231800b99b8Sopenharmony_ci "#03 pc 000350a5 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop(\n" + 232800b99b8Sopenharmony_ci "#04 pc 000363df /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::JoinThread(\n" + 233800b99b8Sopenharmony_ci "#05 pc 00010955 /system/lib/platformsdk/libsystem_ability_fwk.z.so(\n" + 234800b99b8Sopenharmony_ci "#06 pc 0000391b /system/bin/sa_main(main.cfi+1986)(c626ef160394bf644c17e6769318dc7d)\n" + 235800b99b8Sopenharmony_ci "#07 pc 00073560 /system/lib/ld-musl-arm.so.1(libc_start_main_stage2+56)(\n" + 236800b99b8Sopenharmony_ci "#08 pc 00003078 /system/bin/sa_main(_start_c+84)(c626ef160394bf644c17e6769318dc7d)\n" + 237800b99b8Sopenharmony_ci "#09 pc 0000301c /system/bin/sa_main(c626ef160394bf644c17e6769318dc7d)\n"; 238800b99b8Sopenharmony_ci ASSERT_TRUE(CheckFaultSummaryValid(summary)); 239800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest09: end."; 240800b99b8Sopenharmony_ci} 241800b99b8Sopenharmony_ci 242800b99b8Sopenharmony_ci/** 243800b99b8Sopenharmony_ci * @tc.name: CrashExceptionTest010 244800b99b8Sopenharmony_ci * @tc.desc: test CheckFaultSummaryValid, invalid Fault Summary. 245800b99b8Sopenharmony_ci * @tc.type: FUNC 246800b99b8Sopenharmony_ci */ 247800b99b8Sopenharmony_ciHWTEST_F(CrashExceptionTest, CrashExceptionTest010, TestSize.Level2) 248800b99b8Sopenharmony_ci{ 249800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest010: start."; 250800b99b8Sopenharmony_ci std::string summary = std::string("Thread name:sensors\n") + 251800b99b8Sopenharmony_ci "#00 pc 000c5738 /system/lib/ld-musl-arm.so.1(ioctl+72)(b985d2b9b22c3e542388f5803bac6a56)\n" + 252800b99b8Sopenharmony_ci "#01 pc 00007fcf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::WriteBinder(\n"; 253800b99b8Sopenharmony_ci ASSERT_FALSE(CheckFaultSummaryValid(summary)); 254800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest010: end."; 255800b99b8Sopenharmony_ci} 256800b99b8Sopenharmony_ci 257800b99b8Sopenharmony_ci/** 258800b99b8Sopenharmony_ci * @tc.name: CrashExceptionTest011 259800b99b8Sopenharmony_ci * @tc.desc: test SetCrashProcInfo functions 260800b99b8Sopenharmony_ci * @tc.type: FUNC 261800b99b8Sopenharmony_ci */ 262800b99b8Sopenharmony_ciHWTEST_F(CrashExceptionTest, CrashExceptionTest011, TestSize.Level2) 263800b99b8Sopenharmony_ci{ 264800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest011: start."; 265800b99b8Sopenharmony_ci std::string name = ""; 266800b99b8Sopenharmony_ci const int32_t pid = -1; 267800b99b8Sopenharmony_ci SetCrashProcInfo(name, pid, 0); 268800b99b8Sopenharmony_ci ReportUnwinderException(0); 269800b99b8Sopenharmony_ci ASSERT_EQ(name, ""); 270800b99b8Sopenharmony_ci GTEST_LOG_(INFO) << "CrashExceptionTest011: end."; 271800b99b8Sopenharmony_ci} 272800b99b8Sopenharmony_ci} // namespace HiviewDFX 273800b99b8Sopenharmony_ci} // namespace OHOS