You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift:闭包调用引发EXC_BAD_ACCESS,简化复现触发栈溢出

Swift闭包引发栈溢出(EXC_BAD_ACCESS code=2)问题分析

问题背景

最开始我是在闭包数组的场景下遇到了EXC_BAD_ACCESS code=2错误,为了搞清楚问题根源,我把代码精简到了最少行数(只用来演示问题本身)。

简化后的复现方式

在提示下,我找到了不需要依赖数组的更简单复现方法:运行对应的简化代码就能直接触发栈溢出。

报错原因拆解

EXC_BAD_ACCESS code=2对应的是栈溢出错误,结合闭包场景来看,大概率是因为闭包形成了循环引用+递归调用:

  • 如果闭包内部直接或间接调用了自身,同时没有通过weak/unowned打破循环引用,就会不断生成新的栈帧;
  • 当栈帧的数量超过系统分配的栈空间上限时,就会触发这个访问错误。

后续动作

目前我已经准备好向Swift官方提交Bug报告,会把精简后的复现代码、问题场景和报错详情整理后反馈给官方团队。

内容的提问来源于stack exchange,提问作者Andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:54:35