我的项目仅支持Swift(至少我所编写的代码如此)。在应用程序启动时,我下载一些JSON以显示内容。我使用
基于此,我有两个问题:
1. 如何确保这不会再次发生? 2. 是否有一种方法可以重现它?
更多信息: 我有这个摘要,但我不确定该如何解释它:
SUMMARY: AddressSanitizer: stack-buffer-overflow JsonClass.swift in _T06MyApp11JsonClassVACs7Decoder_p4from_tKcfC 错误地址附近的影子字节: 0x100026a904d0: 00 02 f2 f2 f2 f2 f2 f2 f2 f2 00 00 00 00 00 00 0x100026a904e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100026a904f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100026a90500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100026a90510: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 =>0x100026a90520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00[f2]f2 0x100026a90530: f2 f2 f2 f2 f2 f2 f2 f2 f2 f2 f2 f2 f2 f2 00 00 0x100026a90540: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100026a90550: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100026a90560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100026a90570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 影子字节图例(一个影子字节代表8个应用程序字节): 可寻址: 00 部分可寻址: 01 02 03 04 05 06 07 堆左边界红区: fa 已释放的堆区域: fd 栈左边界红区: f1 栈中间红区: f2 栈右边界红区: f3 返回后的栈: f5 范围之外使用的栈: f8 全局红区: f9 全局初始化顺序: f6 用户污染: f7 容器溢出: fc 数组cookie: ac 对象内部红区: bb ASan内部: fe 左alloca红区: ca 右alloca红区: cb
Swift 4 Coder protocol
反序列化此内容。这已经运作了一段时间,但现在我收到了一个意外的堆栈缓冲区溢出错误:==44088==ERROR: AddressSanitizer: stack-buffer-overflow
,是在其中一个后台线程中反序列化对象时发生的。基于此,我有两个问题:
1. 如何确保这不会再次发生? 2. 是否有一种方法可以重现它?
更多信息: 我有这个摘要,但我不确定该如何解释它:
SUMMARY: AddressSanitizer: stack-buffer-overflow JsonClass.swift in _T06MyApp11JsonClassVACs7Decoder_p4from_tKcfC 错误地址附近的影子字节: 0x100026a904d0: 00 02 f2 f2 f2 f2 f2 f2 f2 f2 00 00 00 00 00 00 0x100026a904e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100026a904f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100026a90500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100026a90510: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 =>0x100026a90520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00[f2]f2 0x100026a90530: f2 f2 f2 f2 f2 f2 f2 f2 f2 f2 f2 f2 f2 f2 00 00 0x100026a90540: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100026a90550: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100026a90560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100026a90570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 影子字节图例(一个影子字节代表8个应用程序字节): 可寻址: 00 部分可寻址: 01 02 03 04 05 06 07 堆左边界红区: fa 已释放的堆区域: fd 栈左边界红区: f1 栈中间红区: f2 栈右边界红区: f3 返回后的栈: f5 范围之外使用的栈: f8 全局红区: f9 全局初始化顺序: f6 用户污染: f7 容器溢出: fc 数组cookie: ac 对象内部红区: bb ASan内部: fe 左alloca红区: ca 右alloca红区: cb
编辑:
在模拟器中每次都会出现这个问题。然后我清理了构建并删除了派生数据文件夹,从那以后就没有再出现了。但我仍然想知道是否需要担心生产环境中的错误。