XPC connection interrupted
用Analysis 静态分析代码,发现了一些问题,修改之后,然后用Instrument -> Leaks对内存做动态分析,发现一个错误:
控制台报错:XPC connection interrupted
调试报错:libsystem_plantform.dylib'OSAtomicDequeuemp':
libsystem_platform.dylib`OSAtomicDequeuemp:
0x181d178f8 <+0>: mov x8, x0
0x181d178fc <+4>: ldaxr x0, [x8]
0x181d17900 <+8>: cbz x0, 0x181d17914 ; <+28>
-> 0x181d17904 <+12>: ldr x9, [x0, x1] #Thread 19: EXC_BAD_ACCESS (code=1, address=0x5a74d288)
0x181d17908 <+16>: stxr w10, x9, [x8]
0x181d1790c <+20>: cbnz w10, 0x181d178fc ; <+4>
0x181d17910 <+24>: ret
0x181d17914 <+28>: clrex
0x181d17918 <+32>: ret
调试仪表盘上线程信息:
>Thread 19
0 OSAtomicDequeuemp
7 thread_start
如果关掉Instrument, 是不影响程序运行的。我不只是一次发现这个控制台错误了,也没有发现好的消除该错误的方法。另外在用Instrument检查的时候,是没有发现内存泄漏的小红叉的,全是绿色的对号。
关于XPC: OBJCCN上有一篇详细的文章
https://objccn.io/issue-14-4/
网上大多数的解决思路是看当前错误发生在哪个线程,如果创建线程或者队列的时候都是用了标识符,就能很快定位到出错位置,但是我这次遇到的问题,错误发生在系统的动态链接库内部,无解,从字面意思上来看,也像是发生在主线程。
主线程中做的事情太多了,而且是一个抽屉界面,不知道错误发生在哪个控制器的那个环节。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具