1 /* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include <ctime> 17 #include <gtest/gtest.h> 18 #include <securec.h> 19 #include <string> 20 #include <vector> 21 22 #include "crash_exception.h" 23 #include "crash_exception_listener.h" 24 #include "dfx_errors.h" 25 #include "dfx_util.h" 26 #include "hisysevent_manager.h" 27 28 using namespace OHOS::HiviewDFX; 29 using namespace testing::ext; 30 using namespace std; 31 32 namespace OHOS { 33 namespace HiviewDFX { 34 class CrashExceptionTest : public testing::Test { 35 public: SetUpTestCase(void)36 static void SetUpTestCase(void) {} TearDownTestCase(void)37 static void TearDownTestCase(void) {} SetUp()38 void SetUp() {} TearDown()39 void TearDown() {} 40 }; 41 42 static constexpr int32_t TEST_PROCESS_ID = 1234; 43 static constexpr int32_t TEST_UID = 5678; 44 45 /** 46 * @tc.name: CrashExceptionTest001 47 * @tc.desc: test ReportCrashException 48 * @tc.type: FUNC 49 */ 50 HWTEST_F(CrashExceptionTest, CrashExceptionTest001, TestSize.Level2) 51 { 52 GTEST_LOG_(INFO) << "CrashExceptionTest001: start."; 53 char testProcessName[] = "process_name_ptr"; 54 std::shared_ptr<CrashExceptionListener> crashListener = std::make_shared<CrashExceptionListener>(); 55 ListenerRule tagRule("RELIABILITY", "CPP_CRASH_EXCEPTION", RuleType::WHOLE_WORD); 56 std::vector<ListenerRule> sysRules; 57 sysRules.push_back(tagRule); 58 HiSysEventManager::AddListener(crashListener, sysRules); 59 crashListener->SetKeyWord(testProcessName); 60 ReportCrashException(testProcessName, TEST_PROCESS_ID, TEST_UID, CrashExceptionCode::CRASH_UNKNOWN); 61 ASSERT_TRUE(crashListener->CheckKeywordInReasons()); 62 HiSysEventManager::RemoveListener(crashListener); 63 GTEST_LOG_(INFO) << "CrashExceptionTest001: end."; 64 } 65 66 /** 67 * @tc.name: CrashExceptionTest002 68 * @tc.desc: test ReportCrashException, error code is success. 69 * @tc.type: FUNC 70 */ 71 HWTEST_F(CrashExceptionTest, CrashExceptionTest002, TestSize.Level2) 72 { 73 GTEST_LOG_(INFO) << "CrashExceptionTest002: start."; 74 char testProcessName[] = "process_name_ptr"; 75 std::shared_ptr<CrashExceptionListener> crashListener = std::make_shared<CrashExceptionListener>(); 76 ListenerRule tagRule("RELIABILITY", "CPP_CRASH_EXCEPTION", RuleType::WHOLE_WORD); 77 std::vector<ListenerRule> sysRules; 78 sysRules.push_back(tagRule); 79 HiSysEventManager::AddListener(crashListener, sysRules); 80 crashListener->SetKeyWord(testProcessName); 81 ReportCrashException(testProcessName, TEST_PROCESS_ID, TEST_UID, CrashExceptionCode::CRASH_ESUCCESS); 82 ASSERT_FALSE(crashListener->CheckKeywordInReasons()); 83 HiSysEventManager::RemoveListener(crashListener); 84 GTEST_LOG_(INFO) << "CrashExceptionTest002: end."; 85 } 86 87 /** 88 * @tc.name: CrashExceptionTest003 89 * @tc.desc: test ReportCrashException, process name length is more than 128 bytes. 90 * @tc.type: FUNC 91 */ 92 HWTEST_F(CrashExceptionTest, CrashExceptionTest003, TestSize.Level2) 93 { 94 GTEST_LOG_(INFO) << "CrashExceptionTest003: start."; 95 char testProcessName[] = "process_name_ptr_1111111111111111111111111111111111111" 96 "11111111111111111111111111111111111111111111111111111111111111111111111111111111" 97 "11111111111111111111111111111111111111111111111111111111111111111111111111111111"; 98 std::shared_ptr<CrashExceptionListener> crashListener = std::make_shared<CrashExceptionListener>(); 99 ListenerRule tagRule("RELIABILITY", "CPP_CRASH_EXCEPTION", RuleType::WHOLE_WORD); 100 std::vector<ListenerRule> sysRules; 101 sysRules.push_back(tagRule); 102 HiSysEventManager::AddListener(crashListener, sysRules); 103 crashListener->SetKeyWord(testProcessName); 104 ReportCrashException(testProcessName, TEST_PROCESS_ID, TEST_UID, CrashExceptionCode::CRASH_UNKNOWN); 105 ASSERT_FALSE(crashListener->CheckKeywordInReasons()); 106 HiSysEventManager::RemoveListener(crashListener); 107 GTEST_LOG_(INFO) << "CrashExceptionTest003: end."; 108 } 109 110 /** 111 * @tc.name: CrashExceptionTest004 112 * @tc.desc: test ReportCrashException 113 * @tc.type: FUNC 114 */ 115 HWTEST_F(CrashExceptionTest, CrashExceptionTest004, TestSize.Level2) 116 { 117 GTEST_LOG_(INFO) << "CrashExceptionTest004: start."; 118 std::string keyWord = "process_name_string"; 119 std::shared_ptr<CrashExceptionListener> crashListener = std::make_shared<CrashExceptionListener>(); 120 ListenerRule tagRule("RELIABILITY", "CPP_CRASH_EXCEPTION", RuleType::WHOLE_WORD); 121 std::vector<ListenerRule> sysRules; 122 sysRules.push_back(tagRule); 123 HiSysEventManager::AddListener(crashListener, sysRules); 124 crashListener->SetKeyWord(keyWord); 125 ReportCrashException(keyWord, TEST_PROCESS_ID, TEST_UID, CrashExceptionCode::CRASH_UNKNOWN); 126 ASSERT_TRUE(crashListener->CheckKeywordInReasons()); 127 HiSysEventManager::RemoveListener(crashListener); 128 GTEST_LOG_(INFO) << "CrashExceptionTest004: end."; 129 } 130 131 /** 132 * @tc.name: CrashExceptionTest005 133 * @tc.desc: test ReportCrashException, error code is success. 134 * @tc.type: FUNC 135 */ 136 HWTEST_F(CrashExceptionTest, CrashExceptionTest005, TestSize.Level2) 137 { 138 GTEST_LOG_(INFO) << "CrashExceptionTest005: start."; 139 std::string keyWord = "process_name_string"; 140 std::shared_ptr<CrashExceptionListener> crashListener = std::make_shared<CrashExceptionListener>(); 141 ListenerRule tagRule("RELIABILITY", "CPP_CRASH_EXCEPTION", RuleType::WHOLE_WORD); 142 std::vector<ListenerRule> sysRules; 143 sysRules.push_back(tagRule); 144 HiSysEventManager::AddListener(crashListener, sysRules); 145 crashListener->SetKeyWord(keyWord); 146 ReportCrashException(keyWord, TEST_PROCESS_ID, TEST_UID, CrashExceptionCode::CRASH_ESUCCESS); 147 ASSERT_FALSE(crashListener->CheckKeywordInReasons()); 148 HiSysEventManager::RemoveListener(crashListener); 149 GTEST_LOG_(INFO) << "CrashExceptionTest005: end."; 150 } 151 152 /** 153 * @tc.name: CrashExceptionTest006 154 * @tc.desc: test ReportUnwinderException 155 * @tc.type: FUNC 156 */ 157 HWTEST_F(CrashExceptionTest, CrashExceptionTest006, TestSize.Level2) 158 { 159 GTEST_LOG_(INFO) << "CrashExceptionTest006: start."; 160 std::string keyWord = "process_name_unwind"; 161 std::shared_ptr<CrashExceptionListener> crashListener = std::make_shared<CrashExceptionListener>(); 162 ListenerRule tagRule("RELIABILITY", "CPP_CRASH_EXCEPTION", RuleType::WHOLE_WORD); 163 std::vector<ListenerRule> sysRules; 164 sysRules.push_back(tagRule); 165 HiSysEventManager::AddListener(crashListener, sysRules); 166 crashListener->SetKeyWord(keyWord); 167 SetCrashProcInfo(keyWord, TEST_PROCESS_ID, TEST_UID); 168 ReportUnwinderException(UnwindErrorCode::UNW_ERROR_STEP_ARK_FRAME); 169 ASSERT_TRUE(crashListener->CheckKeywordInReasons()); 170 HiSysEventManager::RemoveListener(crashListener); 171 GTEST_LOG_(INFO) << "CrashExceptionTest006: end."; 172 } 173 174 /** 175 * @tc.name: CrashExceptionTest007 176 * @tc.desc: test ReportUnwinderException, invalid unwind error code. 177 * @tc.type: FUNC 178 */ 179 HWTEST_F(CrashExceptionTest, CrashExceptionTest007, TestSize.Level2) 180 { 181 GTEST_LOG_(INFO) << "CrashExceptionTest007: start."; 182 std::string keyWord = "process_name_unwind"; 183 std::shared_ptr<CrashExceptionListener> crashListener = std::make_shared<CrashExceptionListener>(); 184 ListenerRule tagRule("RELIABILITY", "CPP_CRASH_EXCEPTION", RuleType::WHOLE_WORD); 185 std::vector<ListenerRule> sysRules; 186 sysRules.push_back(tagRule); 187 HiSysEventManager::AddListener(crashListener, sysRules); 188 crashListener->SetKeyWord(keyWord); 189 SetCrashProcInfo(keyWord, TEST_PROCESS_ID, TEST_UID); 190 ReportUnwinderException(0); 191 ASSERT_FALSE(crashListener->CheckKeywordInReasons()); 192 HiSysEventManager::RemoveListener(crashListener); 193 GTEST_LOG_(INFO) << "CrashExceptionTest007: end."; 194 } 195 196 /** 197 * @tc.name: CrashExceptionTest008 198 * @tc.desc: test CheckCrashLogValid, valid fault log. 199 * @tc.type: FUNC 200 */ 201 HWTEST_F(CrashExceptionTest, CrashExceptionTest008, TestSize.Level2) 202 { 203 GTEST_LOG_(INFO) << "CrashExceptionTest008: start."; 204 std::string file = std::string("Module name:sensors\n") + 205 "Fault thread info:\n" + 206 "Tid:667, Name:sensors\n" + 207 "#00 pc 000c1f0c /system/lib/ld-musl-arm.so.1(ioctl+72)(1b29d22c50bcb2ceee39f8a2bbb936dc)\n" + 208 "#01 pc 0000efdf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::Write\n" + 209 "#02 pc 00032a49 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDr\n" + 210 "#03 pc 00032b43 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop(\n" + 211 "Registers:\n" + 212 "r0:00000006 r1:c0306201 r2:ffe08e08 r3:00000009\n" + 213 "r4:00000100 r5:f755a010 r6:00000000 r7:00000036\n" + 214 "r8:00000006 r9:c0306201 r10:0000000c\n" + 215 "fp:ffe08db8 ip:f6cdf360 sp:ffe08c90 lr:f6ccefe3 pc:f7e5cf0c\n" + 216 "Other thread info:\n" + 217 "Tid:875, Name:OS_IPC_0_875\n" + 218 "#00 pc 000c1f0c /system/lib/ld-musl-arm.so.1(ioctl+72)(1b29d22c50bcb2ceee39f8a2bbb936dc)\n" + 219 "#01 pc 0000efdf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::WriteBinder\n" + 220 "#02 pc 00032a49 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDriver\n" + 221 "#03 pc 00032b43 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop()+34)\n" + 222 "Memory near registers:\n" + 223 "r2([stack]):\n" + 224 " ffe08e00 80407202\n" + 225 " ffe08e04 f755a038\n" + 226 "FaultStack:\n" + 227 " ffe08c50 00000040\n" + 228 "Maps:\n" + 229 "4d0000-4d3000 r--p 00000000 /system/bin/sa_main\n" + 230 "4d3000-4d6000 r-xp 00003000 /system/bin/sa_main\n" + 231 "4d6000-4d7000 r--p 00006000 /system/bin/sa_main\n" + 232 "HiLog:\n" + 233 "08-05 18:30:41.876 667 667 E C03f00/MUSL-SIGCHAIN: signal_chain_handler call\n"; 234 int32_t ret = CheckCrashLogValid(file); 235 ASSERT_TRUE(ret == CrashExceptionCode::CRASH_ESUCCESS); 236 GTEST_LOG_(INFO) << "CrashExceptionTest008: end."; 237 } 238 239 /** 240 * @tc.name: CrashExceptionTest009 241 * @tc.desc: test CheckCrashLogValid, invalid Fault thread info. 242 * @tc.type: FUNC 243 */ 244 HWTEST_F(CrashExceptionTest, CrashExceptionTest009, TestSize.Level2) 245 { 246 GTEST_LOG_(INFO) << "CrashExceptionTest009: start."; 247 std::string file = std::string("Module name:sensors\n") + 248 "Fault thread info:\n" + 249 "Tid:667, Name:sensors\n" + 250 "#00 pc 000c1f0c /system/lib/ld-musl-arm.so.1(ioctl+72)(1b29d22c50bcb2ceee39f8a2bbb936dc)\n" + 251 "#01 pc 0000efdf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::Write\n" + 252 "Registers:\n" + 253 "r0:00000006 r1:c0306201 r2:ffe08e08 r3:00000009\n" + 254 "r4:00000100 r5:f755a010 r6:00000000 r7:00000036\n" + 255 "r8:00000006 r9:c0306201 r10:0000000c\n" + 256 "fp:ffe08db8 ip:f6cdf360 sp:ffe08c90 lr:f6ccefe3 pc:f7e5cf0c\n" + 257 "Other thread info:\n" + 258 "Tid:875, Name:OS_IPC_0_875\n" + 259 "#00 pc 000c1f0c /system/lib/ld-musl-arm.so.1(ioctl+72)(1b29d22c50bcb2ceee39f8a2bbb936dc)\n" + 260 "#01 pc 0000efdf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::WriteBinder\n" + 261 "#02 pc 00032a49 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDriver\n" + 262 "#03 pc 00032b43 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop()+34)\n" + 263 "Memory near registers:\n" + 264 "r2([stack]):\n" + 265 " ffe08e00 80407202\n" + 266 " ffe08e04 f755a038\n" + 267 "FaultStack:\n" + 268 " ffe08c50 00000040\n" + 269 "Maps:\n" + 270 "4d0000-4d3000 r--p 00000000 /system/bin/sa_main\n" + 271 "4d3000-4d6000 r-xp 00003000 /system/bin/sa_main\n" + 272 "4d6000-4d7000 r--p 00006000 /system/bin/sa_main\n" + 273 "HiLog:\n" + 274 "08-05 18:30:41.876 667 667 E C03f00/MUSL-SIGCHAIN: signal_chain_handler call\n"; 275 int32_t ret = CheckCrashLogValid(file); 276 ASSERT_FALSE(ret == CrashExceptionCode::CRASH_ESUCCESS); 277 GTEST_LOG_(INFO) << "CrashExceptionTest009: end."; 278 } 279 280 /** 281 * @tc.name: CrashExceptionTest010 282 * @tc.desc: test CheckCrashLogValid, invalid Registers. 283 * @tc.type: FUNC 284 */ 285 HWTEST_F(CrashExceptionTest, CrashExceptionTest010, TestSize.Level2) 286 { 287 GTEST_LOG_(INFO) << "CrashExceptionTest010: start."; 288 std::string file = std::string("Module name:sensors\n") + 289 "Fault thread info:\n" + 290 "Tid:667, Name:sensors\n" + 291 "#00 pc 000c1f0c /system/lib/ld-musl-arm.so.1(ioctl+72)(1b29d22c50bcb2ceee39f8a2bbb936dc)\n" + 292 "#01 pc 0000efdf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::Write\n" + 293 "#02 pc 00032a49 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDr\n" + 294 "#03 pc 00032b43 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop(\n" + 295 "Other thread info:\n" + 296 "Tid:875, Name:OS_IPC_0_875\n" + 297 "#00 pc 000c1f0c /system/lib/ld-musl-arm.so.1(ioctl+72)(1b29d22c50bcb2ceee39f8a2bbb936dc)\n" + 298 "#01 pc 0000efdf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::WriteBinder\n" + 299 "#02 pc 00032a49 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDriver\n" + 300 "#03 pc 00032b43 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop()+34)\n" + 301 "Memory near registers:\n" + 302 "r2([stack]):\n" + 303 " ffe08e00 80407202\n" + 304 " ffe08e04 f755a038\n" + 305 "FaultStack:\n" + 306 " ffe08c50 00000040\n" + 307 "Maps:\n" + 308 "4d0000-4d3000 r--p 00000000 /system/bin/sa_main\n" + 309 "4d3000-4d6000 r-xp 00003000 /system/bin/sa_main\n" + 310 "4d6000-4d7000 r--p 00006000 /system/bin/sa_main\n" + 311 "HiLog:\n" + 312 "08-05 18:30:41.876 667 667 E C03f00/MUSL-SIGCHAIN: signal_chain_handler call\n"; 313 int32_t ret = CheckCrashLogValid(file); 314 ASSERT_FALSE(ret == CrashExceptionCode::CRASH_ESUCCESS); 315 GTEST_LOG_(INFO) << "CrashExceptionTest010: end."; 316 } 317 318 /** 319 * @tc.name: CrashExceptionTest011 320 * @tc.desc: test CheckCrashLogValid, invalid Other thread info. 321 * @tc.type: FUNC 322 */ 323 HWTEST_F(CrashExceptionTest, CrashExceptionTest011, TestSize.Level2) 324 { 325 GTEST_LOG_(INFO) << "CrashExceptionTest011: start."; 326 std::string file = std::string("Module name:sensors\n") + 327 "Fault thread info:\n" + 328 "Tid:667, Name:sensors\n" + 329 "#00 pc 000c1f0c /system/lib/ld-musl-arm.so.1(ioctl+72)(1b29d22c50bcb2ceee39f8a2bbb936dc)\n" + 330 "#01 pc 0000efdf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::Write\n" + 331 "#02 pc 00032a49 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDr\n" + 332 "#03 pc 00032b43 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop(\n" + 333 "Registers:\n" + 334 "r0:00000006 r1:c0306201 r2:ffe08e08 r3:00000009\n" + 335 "r4:00000100 r5:f755a010 r6:00000000 r7:00000036\n" + 336 "r8:00000006 r9:c0306201 r10:0000000c\n" + 337 "fp:ffe08db8 ip:f6cdf360 sp:ffe08c90 lr:f6ccefe3 pc:f7e5cf0c\n" + 338 "Other thread info:\n" + 339 "Tid:875, Name:OS_IPC_0_875\n" + 340 "#00 pc 000c1f0c /system/lib/ld-musl-arm.so.1(ioctl+72)(1b29d22c50bcb2ceee39f8a2bbb936dc)\n" + 341 "#01 pc 0000efdf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::WriteBinder\n" + 342 "Memory near registers:\n" + 343 "r2([stack]):\n" + 344 " ffe08e00 80407202\n" + 345 " ffe08e04 f755a038\n" + 346 "FaultStack:\n" + 347 " ffe08c50 00000040\n" + 348 "Maps:\n" + 349 "4d0000-4d3000 r--p 00000000 /system/bin/sa_main\n" + 350 "4d3000-4d6000 r-xp 00003000 /system/bin/sa_main\n" + 351 "4d6000-4d7000 r--p 00006000 /system/bin/sa_main\n" + 352 "HiLog:\n" + 353 "08-05 18:30:41.876 667 667 E C03f00/MUSL-SIGCHAIN: signal_chain_handler call\n"; 354 int32_t ret = CheckCrashLogValid(file); 355 ASSERT_FALSE(ret == CrashExceptionCode::CRASH_ESUCCESS); 356 GTEST_LOG_(INFO) << "CrashExceptionTest011: end."; 357 } 358 359 /** 360 * @tc.name: CrashExceptionTest012 361 * @tc.desc: test CheckCrashLogValid, invalid Memory near registers. 362 * @tc.type: FUNC 363 */ 364 HWTEST_F(CrashExceptionTest, CrashExceptionTest012, TestSize.Level2) 365 { 366 GTEST_LOG_(INFO) << "CrashExceptionTest012: start."; 367 std::string file = std::string("Module name:sensors\n") + 368 "Fault thread info:\n" + 369 "Tid:667, Name:sensors\n" + 370 "#00 pc 000c1f0c /system/lib/ld-musl-arm.so.1(ioctl+72)(1b29d22c50bcb2ceee39f8a2bbb936dc)\n" + 371 "#01 pc 0000efdf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::Write\n" + 372 "#02 pc 00032a49 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDr\n" + 373 "#03 pc 00032b43 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop(\n" + 374 "Registers:\n" + 375 "r0:00000006 r1:c0306201 r2:ffe08e08 r3:00000009\n" + 376 "r4:00000100 r5:f755a010 r6:00000000 r7:00000036\n" + 377 "r8:00000006 r9:c0306201 r10:0000000c\n" + 378 "fp:ffe08db8 ip:f6cdf360 sp:ffe08c90 lr:f6ccefe3 pc:f7e5cf0c\n" + 379 "Other thread info:\n" + 380 "Tid:875, Name:OS_IPC_0_875\n" + 381 "#00 pc 000c1f0c /system/lib/ld-musl-arm.so.1(ioctl+72)(1b29d22c50bcb2ceee39f8a2bbb936dc)\n" + 382 "#01 pc 0000efdf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::WriteBinder\n" + 383 "#02 pc 00032a49 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDriver\n" + 384 "#03 pc 00032b43 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop()+34)\n" + 385 "FaultStack:\n" + 386 " ffe08c50 00000040\n" + 387 "Maps:\n" + 388 "4d0000-4d3000 r--p 00000000 /system/bin/sa_main\n" + 389 "4d3000-4d6000 r-xp 00003000 /system/bin/sa_main\n" + 390 "4d6000-4d7000 r--p 00006000 /system/bin/sa_main\n" + 391 "HiLog:\n" + 392 "08-05 18:30:41.876 667 667 E C03f00/MUSL-SIGCHAIN: signal_chain_handler call\n"; 393 int32_t ret = CheckCrashLogValid(file); 394 ASSERT_FALSE(ret == CrashExceptionCode::CRASH_ESUCCESS); 395 GTEST_LOG_(INFO) << "CrashExceptionTest012: end."; 396 } 397 398 /** 399 * @tc.name: CrashExceptionTest013 400 * @tc.desc: test CheckCrashLogValid, invalid FaultStack. 401 * @tc.type: FUNC 402 */ 403 HWTEST_F(CrashExceptionTest, CrashExceptionTest013, TestSize.Level2) 404 { 405 GTEST_LOG_(INFO) << "CrashExceptionTest013: start."; 406 std::string file = std::string("Module name:sensors\n") + 407 "Fault thread info:\n" + 408 "Tid:667, Name:sensors\n" + 409 "#00 pc 000c1f0c /system/lib/ld-musl-arm.so.1(ioctl+72)(1b29d22c50bcb2ceee39f8a2bbb936dc)\n" + 410 "#01 pc 0000efdf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::Write\n" + 411 "#02 pc 00032a49 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDr\n" + 412 "#03 pc 00032b43 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop(\n" + 413 "Registers:\n" + 414 "r0:00000006 r1:c0306201 r2:ffe08e08 r3:00000009\n" + 415 "r4:00000100 r5:f755a010 r6:00000000 r7:00000036\n" + 416 "r8:00000006 r9:c0306201 r10:0000000c\n" + 417 "fp:ffe08db8 ip:f6cdf360 sp:ffe08c90 lr:f6ccefe3 pc:f7e5cf0c\n" + 418 "Other thread info:\n" + 419 "Tid:875, Name:OS_IPC_0_875\n" + 420 "#00 pc 000c1f0c /system/lib/ld-musl-arm.so.1(ioctl+72)(1b29d22c50bcb2ceee39f8a2bbb936dc)\n" + 421 "#01 pc 0000efdf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::WriteBinder\n" + 422 "#02 pc 00032a49 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDriver\n" + 423 "#03 pc 00032b43 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop()+34)\n" + 424 "Memory near registers:\n" + 425 "r2([stack]):\n" + 426 " ffe08e00 80407202\n" + 427 " ffe08e04 f755a038\n" + 428 "Maps:\n" + 429 "4d0000-4d3000 r--p 00000000 /system/bin/sa_main\n" + 430 "4d3000-4d6000 r-xp 00003000 /system/bin/sa_main\n" + 431 "4d6000-4d7000 r--p 00006000 /system/bin/sa_main\n" + 432 "HiLog:\n" + 433 "08-05 18:30:41.876 667 667 E C03f00/MUSL-SIGCHAIN: signal_chain_handler call\n"; 434 int32_t ret = CheckCrashLogValid(file); 435 ASSERT_FALSE(ret == CrashExceptionCode::CRASH_ESUCCESS); 436 GTEST_LOG_(INFO) << "CrashExceptionTest013: end."; 437 } 438 439 /** 440 * @tc.name: CrashExceptionTest014 441 * @tc.desc: test CheckCrashLogValid, invalid Maps. 442 * @tc.type: FUNC 443 */ 444 HWTEST_F(CrashExceptionTest, CrashExceptionTest014, TestSize.Level2) 445 { 446 GTEST_LOG_(INFO) << "CrashExceptionTest014: start."; 447 std::string file = std::string("Module name:sensors\n") + 448 "Fault thread info:\n" + 449 "Tid:667, Name:sensors\n" + 450 "#00 pc 000c1f0c /system/lib/ld-musl-arm.so.1(ioctl+72)(1b29d22c50bcb2ceee39f8a2bbb936dc)\n" + 451 "#01 pc 0000efdf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::Write\n" + 452 "#02 pc 00032a49 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDr\n" + 453 "#03 pc 00032b43 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop(\n" + 454 "Registers:\n" + 455 "r0:00000006 r1:c0306201 r2:ffe08e08 r3:00000009\n" + 456 "r4:00000100 r5:f755a010 r6:00000000 r7:00000036\n" + 457 "r8:00000006 r9:c0306201 r10:0000000c\n" + 458 "fp:ffe08db8 ip:f6cdf360 sp:ffe08c90 lr:f6ccefe3 pc:f7e5cf0c\n" + 459 "Other thread info:\n" + 460 "Tid:875, Name:OS_IPC_0_875\n" + 461 "#00 pc 000c1f0c /system/lib/ld-musl-arm.so.1(ioctl+72)(1b29d22c50bcb2ceee39f8a2bbb936dc)\n" + 462 "#01 pc 0000efdf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::WriteBinder\n" + 463 "#02 pc 00032a49 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDriver\n" + 464 "#03 pc 00032b43 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop()+34)\n" + 465 "Memory near registers:\n" + 466 "r2([stack]):\n" + 467 " ffe08e00 80407202\n" + 468 " ffe08e04 f755a038\n" + 469 "FaultStack:\n" + 470 " ffe08c50 00000040\n" + 471 "HiLog:\n" + 472 "08-05 18:30:41.876 667 667 E C03f00/MUSL-SIGCHAIN: signal_chain_handler call\n"; 473 int32_t ret = CheckCrashLogValid(file); 474 ASSERT_FALSE(ret == CrashExceptionCode::CRASH_ESUCCESS); 475 GTEST_LOG_(INFO) << "CrashExceptionTest014: end."; 476 } 477 478 /** 479 * @tc.name: CrashExceptionTest015 480 * @tc.desc: test CheckFaultSummaryValid, valid Fault Summary. 481 * @tc.type: FUNC 482 */ 483 HWTEST_F(CrashExceptionTest, CrashExceptionTest015, TestSize.Level2) 484 { 485 GTEST_LOG_(INFO) << "CrashExceptionTest015: start."; 486 std::string summary = std::string("Thread name:sensors\n") + 487 "#00 pc 000c5738 /system/lib/ld-musl-arm.so.1(ioctl+72)(b985d2b9b22c3e542388f5803bac6a56)\n" + 488 "#01 pc 00007fcf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::WriteBinder(\n" + 489 "#02 pc 00034f35 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDriver(\n" + 490 "#03 pc 000350a5 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop(\n" + 491 "#04 pc 000363df /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::JoinThread(\n" + 492 "#05 pc 00010955 /system/lib/platformsdk/libsystem_ability_fwk.z.so(\n" + 493 "#06 pc 0000391b /system/bin/sa_main(main.cfi+1986)(c626ef160394bf644c17e6769318dc7d)\n" + 494 "#07 pc 00073560 /system/lib/ld-musl-arm.so.1(libc_start_main_stage2+56)(\n" + 495 "#08 pc 00003078 /system/bin/sa_main(_start_c+84)(c626ef160394bf644c17e6769318dc7d)\n" + 496 "#09 pc 0000301c /system/bin/sa_main(c626ef160394bf644c17e6769318dc7d)\n"; 497 ASSERT_TRUE(CheckFaultSummaryValid(summary)); 498 GTEST_LOG_(INFO) << "CrashExceptionTest015: end."; 499 } 500 501 /** 502 * @tc.name: CrashExceptionTest016 503 * @tc.desc: test CheckFaultSummaryValid, valid Fault Summary. 504 * @tc.type: FUNC 505 */ 506 HWTEST_F(CrashExceptionTest, CrashExceptionTest016, TestSize.Level2) 507 { 508 GTEST_LOG_(INFO) << "CrashExceptionTest016: start."; 509 std::string summary = std::string("Thread name:sensors\n") + 510 "#00 pc 000c5738 /system/lib/ld-musl-arm.so.1(ioctl+72)(b985d2b9b22c3e542388f5803bac6a56)\n" + 511 "#01 pc 00007fcf Not mapped\n" + 512 "#02 pc 00034f35 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::TransactWithDriver(\n" + 513 "#03 pc 000350a5 /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::StartWorkLoop(\n" + 514 "#04 pc 000363df /system/lib/platformsdk/libipc_core.z.so(OHOS::BinderInvoker::JoinThread(\n" + 515 "#05 pc 00010955 /system/lib/platformsdk/libsystem_ability_fwk.z.so(\n" + 516 "#06 pc 0000391b /system/bin/sa_main(main.cfi+1986)(c626ef160394bf644c17e6769318dc7d)\n" + 517 "#07 pc 00073560 /system/lib/ld-musl-arm.so.1(libc_start_main_stage2+56)(\n" + 518 "#08 pc 00003078 /system/bin/sa_main(_start_c+84)(c626ef160394bf644c17e6769318dc7d)\n" + 519 "#09 pc 0000301c /system/bin/sa_main(c626ef160394bf644c17e6769318dc7d)\n"; 520 ASSERT_TRUE(CheckFaultSummaryValid(summary)); 521 GTEST_LOG_(INFO) << "CrashExceptionTest016: end."; 522 } 523 524 /** 525 * @tc.name: CrashExceptionTest017 526 * @tc.desc: test CheckFaultSummaryValid, invalid Fault Summary. 527 * @tc.type: FUNC 528 */ 529 HWTEST_F(CrashExceptionTest, CrashExceptionTest017, TestSize.Level2) 530 { 531 GTEST_LOG_(INFO) << "CrashExceptionTest017: start."; 532 std::string summary = std::string("Thread name:sensors\n") + 533 "#00 pc 000c5738 /system/lib/ld-musl-arm.so.1(ioctl+72)(b985d2b9b22c3e542388f5803bac6a56)\n" + 534 "#01 pc 00007fcf /system/lib/chipset-pub-sdk/libipc_common.z.so(OHOS::BinderConnector::WriteBinder(\n"; 535 ASSERT_FALSE(CheckFaultSummaryValid(summary)); 536 GTEST_LOG_(INFO) << "CrashExceptionTest017: end."; 537 } 538 539 /** 540 * @tc.name: CrashExceptionTest018 541 * @tc.desc: test SetCrashProcInfo functions 542 * @tc.type: FUNC 543 */ 544 HWTEST_F(CrashExceptionTest, CrashExceptionTest018, TestSize.Level2) 545 { 546 GTEST_LOG_(INFO) << "CrashExceptionTest018: start."; 547 std::string name = ""; 548 const int32_t pid = -1; 549 SetCrashProcInfo(name, pid, 0); 550 ReportUnwinderException(0); 551 ASSERT_EQ(name, ""); 552 GTEST_LOG_(INFO) << "CrashExceptionTest018: end."; 553 } 554 } // namespace HiviewDFX 555 } // namespace OHOS