Xcode 11.2.1线程分析器abort_with_payload

5

我在尝试使用Xcode 11.2.1中的线程安全工具,但每当APP启动时(只是一个来自Xcode模板的单视图应用程序,没有添加任何内容)就会触发__abort_with_payload错误:

libsystem_kernel.dylib`__abort_with_payload:
     0x7fff51b73be0 <+0>:  movl   $0x2000209, %eax          ; imm = 0x2000209 
     0x7fff51b73be5 <+5>:  movq   %rcx, %r10
     0x7fff51b73be8 <+8>:  syscall 
 ->  0x7fff51b73bea <+10>: jae    0x7fff51b73bf4            ; <+20>
     0x7fff51b73bec <+12>: movq   %rax, %rdi
     0x7fff51b73bef <+15>: jmp    0x7fff51b54a89            ; cerror_nocancel
     0x7fff51b73bf4 <+20>: retq   
     0x7fff51b73bf5 <+21>: nop    
     0x7fff51b73bf6 <+22>: nop    
     0x7fff51b73bf7 <+23>: nop

苹果的文档或其他人使用线程Sanitizer的指南都没有说需要做任何超出方案设置中勾选该框的操作,但是对我来说这并不起作用 :(

打印出$arg5的结果是:

pthread_t被破坏了

听起来不太好!

这是在Catalina 10.15.2上使用iPhone 11 Pro Max模拟器。


似乎在Xcode 10.2.1上也存在问题。 - CMash
在 Xcode 11.3 中 - GoZoner
你解决了吗? - Martin Vandzura
不,似乎没什么能做的! - CMash
1
似乎他们在Xcode 11.3.1中修复了这个问题。请参考https://developer.apple.com/documentation/xcode_release_notes/xcode_11_3_1_release_notes。 - Martin Vandzura
是的,看起来是这样,谢谢你提醒! - CMash
3个回答

5

感谢vandzi指出,截至Xcode 11.3.1版本,此问题已得到修复!


是的,已经更新到Xcode 11.3.1并且问题也得到了解决。 - Mike

0

我也遇到了类似的问题,方案设置中开启了线程检测器,关闭后问题得以解决。


0

看起来它与这个tsan提交相关联 https://github.com/llvm/llvm-project/commit/f9a706a36ae5dcb87b0b6649d0c80e989400f48e

https://reviews.llvm.org/D71559

我非常需要运行线程污点分析器,因此我构建了最新的LLVM

> mkdir workspace/
> git clone https://github.com/llvm/llvm-project.git
> cd llvm-project; mkdir build; cd build 

>cmake -G Ninja ../llvm -DLLVM_ENABLE_PROJECTS='clang;clang-tools-extra;libcxx;libcxxabi;libunwind;lldb;compiler-rt;lld;polly' -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=$HOME/llvm -DLLVM_ENABLE_DUMP=ON # not everything is needed though here

>ninja

并替换

~/Library/Developer/CoreSimulator/Devices/C0E36E0C-C22A-426E-80B7-557164B2FBD3/data/Containers/Bundle/Application/D6D4D9DB-4C26-4FA0-8363-5CA03A47B6C0/Spotify.app/Frameworks/libclang_rt.tsan_iossim_dynamic.dylib

使用新构建的库

/workspace/llvm-project/build/lib/clang/10.0.0/lib/darwin/libclang_rt.tsan_iossim_dynamic.dylib # 10.0.0 is the previos version some artifact of my bulding, it had the fixed revision ^

这个应用程序似乎在模拟器中加载并且没有崩溃

Thread 0 Crashed:
0   libsystem_kernel.dylib          0x00007fff523d5bea __abort_with_payload + 10
1   libsystem_kernel.dylib          0x00007fff523d74f3 abort_with_payload_wrapper_internal + 80
2   libsystem_kernel.dylib          0x00007fff523d74a3 abort_with_reason + 19
3   libsystem_pthread.dylib         0x00007fff52469974 pthread_self.cold.1 + 24
4   libsystem_pthread.dylib         0x00007fff52462fe3 pthread_self + 34
5   libclang_rt.tsan_iossim_dynamic.dylib   0x000000013b59816b __tsan::cur_thread() + 11
6   libclang_rt.tsan_iossim_dynamic.dylib   0x000000013b56d985 wrap_sysctlbyname + 37
7   libsystem_sim_kernel.dylib      0x00007fff52470331 assert_simulator_supported_host + 44
8   libSystem.B.dylib               0x00007fff4ff167c1 libSystem_initializer + 78
9   dyld_sim                        0x000000013b3a73a7 ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) + 517

还有! 我的应用程序似乎显示第一个屏幕,但之后就会冻结,所以不确定它是否完全可行。

希望这可以帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接