didi / echo

Echo是一款桌面端调试工具,旨在提高客户端的研发调试效率
Apache License 2.0
1.03k stars 119 forks source link

Xcode13 内部 fishhook崩溃 #24

Open hrk1988 opened 2 years ago

hrk1988 commented 2 years ago

使用设备 iPhone12 Pro Max iOS15.0 19A346 真机与模拟器都会崩溃

在Echo初始化方法hookNSLog里使用了fishhook加了一个钩子,调用rebind_symbols方法时产生了崩溃

崩溃日志 2021-09-22 17:31:40.746202+0800 [568:30569] [unspecified] An empty string is not a valid group container identifier. 2021-09-22 17:31:40.746230+0800 [568:30569] [unspecified] container_create_or_lookup_app_group_path_by_app_group_identifier: client sent invalid parameters

堆栈信息 frame #0: 0x00000001037220bc EchoDemoperform_rebinding_with_section(rebindings=0x0000000282c9cb40, section=0x000000010a7a8420, slide=4470767616, symtab=0x000000010a7d9bf0, strtab="", indirect_symtab=0x000000010a7ddb90) at fishhook.c:104:39 frame #1: 0x0000000103721da4 EchoDemorebind_symbols_for_image(rebindings=0x0000000282c9cb40, header=0x000000010a7a8000, slide=4470767616) at fishhook.c:169:11 frame #2: 0x0000000103721ed8 EchoDemo_rebind_symbols_for_image(header=0x000000010a7a8000, slide=4470767616) at fishhook.c:178:5 frame #3: 0x000000010a347930 dyldinvocation function for block in dyld4::APIs::_dyld_register_func_for_add_image(void ()(mach_header const, long)) + 200 frame #4: 0x000000010a3406f4 dylddyld4::RuntimeState::withLoadersReadLock(void () block_pointer) + 92 frame #5: 0x000000010a3697f8 dylddyld4::APIs::_dyld_register_func_for_add_image(void ()(mach_header const, long)) + 148 frame #6: 0x0000000103721e48 EchoDemorebind_symbols(rebindings=0x000000016f2146e0, rebindings_nel=1) at fishhook.c:200:5 frame #7: 0x0000000101124890 EchoDemo-[ECONSLogManager hookNSLog](self=0x0000000282c9cb00, _cmd="hookNSLog") at ECONSLogManager.m:70:5 frame #8: 0x00000001011247f8 EchoDemo`-[ECONSLogManager init](self=0x0000000282c9cb00, _cmd="init") at ECONSLogManager.m:48:9

cocoa-chen commented 2 years ago

更新到0.0.8的tag再试下,如果pod search搜索不到,可以将本地的CocoaPods索引更新下,在命令行执行下rm ~/Library/Caches/CocoaPods/search_index.json,再pod install