获取线程 10:将 属性 添加到我的结构后 EXC_BAD_ACCESS (code=EXC_I386_GPFLT)

Getting Thread 10: EXC_BAD_ACCESS (code=EXC_I386_GPFLT) after adding property to my struct

我有一个 ProfileRegistration 结构,它只是一个基本模型。我没有遇到任何问题。但是,只要我向模型添加一个新的 属性,只要在代码中的任何位置访问它,应用程序就会在运行时崩溃。

// Causes app to crash
struct ProfileRegistration: Codable {
    let resourceNumber: String?
    let nickName: String?
    let firstName: String?
    let initials: String?
    let name: String?
    let lastName: String?
    let gender: Gender?
    let birthdate: String?
    let nationality: String?
    let phoneNumber: String?
    let email: String?
    
    let insuranceNumber: String?
    let employmentDate: String?
    let username: String?
    
    var worksteadLocations: [WorksteadLocation] = []
    var coworkerInformations: [CoworkerInformation] = []
    
    var worksteadLocation: WorksteadLocation? {
        worksteadLocations.first
    }
    
    var jobCoachFirstName: String? {
        coworkerInformations.first?.firstName
    }
}
// Doesn't cause app to crash
struct ProfileRegistration: Codable {
    let resourceNumber: String?
    let nickName: String? 
    let firstName: String?
    let initials: String?
    // let name: String?
    let lastName: String?
    let gender: Gender?
    let birthdate: String?
    let nationality: String?
    let phoneNumber: String?
    let email: String?
    
    let insuranceNumber: String?
    let employmentDate: String?
    let username: String?
    
    var worksteadLocations: [WorksteadLocation] = []
    var coworkerInformations: [CoworkerInformation] = []
    
    var worksteadLocation: WorksteadLocation? {
        worksteadLocations.first
    }
    
    var jobCoachFirstName: String? {
        coworkerInformations.first?.firstName
    }
}

我收到错误:

Thread 10: EXC_BAD_ACCESS (code=EXC_I386_GPFLT)

在堆栈错误的正上方,我看到了这个

async function pointer to reabstraction thunk helper from @escaping @callee_guaranteed @Sendable @async () -> (@owned Workstead.ProfileRegistration, @error @owned Swift.Error) to @escaping @callee_guaranteed @async () -> (@out Workstead.ProfileRegistration, @error @owned Swift.Error)

完整堆栈:

Workstead`partial apply for thunk for @escaping @callee_guaranteed @Sendable @async () -> (@owned ProfileRegistration, @error @owned Error):
    0x102cc10f0 <+0>:   orq    0x9d5409(%rip), %rbp      ; (void *)0x1000000000000000
    0x102cc10f7 <+7>:   pushq  %rbp
    0x102cc10f8 <+8>:   pushq  %r14
    0x102cc10fa <+10>:  leaq   0x8(%rsp), %rbp
    0x102cc10ff <+15>:  subq   [=17=]x38, %rsp
    0x102cc1103 <+19>:  movq   %r14, -0x10(%rbp)
    0x102cc1107 <+23>:  movq   %rdi, -0x28(%rbp)
    0x102cc110b <+27>:  xorl   %eax, %eax
    0x102cc110d <+29>:  movl   %eax, %edi
    0x102cc110f <+31>:  callq  0x102ccf350               ; ___lldb_unnamed_symbol350$$Workstead
    0x102cc1114 <+36>:  movq   %r14, 0x18(%r14)
    0x102cc1118 <+40>:  movq   0x10(%r13), %rax
    0x102cc111c <+44>:  movq   %rax, -0x20(%rbp)
    0x102cc1120 <+48>:  movq   0x18(%r13), %rax
    0x102cc1124 <+52>:  movq   %rax, -0x18(%rbp)
    0x102cc1128 <+56>:  movl   0xa52fd6(%rip), %eax      ; async function pointer to reabstraction thunk helper from @escaping @callee_guaranteed @Sendable @async () -> (@owned Workstead.ProfileRegistration, @error @owned Swift.Error) to @escaping @callee_guaranteed @async () -> (@out Workstead.ProfileRegistration, @error @owned Swift.Error) + 4
    0x102cc112e <+62>:  movl   %eax, %edi
    0x102cc1130 <+64>:  callq  0x10354a1de               ; symbol stub for: swift_task_alloc
->  0x102cc1135 <+69>:  movq   -0x28(%rbp), %rdi
    0x102cc1139 <+73>:  movq   -0x20(%rbp), %rsi
    0x102cc113d <+77>:  movq   -0x18(%rbp), %rdx
    0x102cc1141 <+81>:  movq   %rax, %r14
    0x102cc1144 <+84>:  movq   -0x10(%rbp), %rax
    0x102cc1148 <+88>:  movq   %r14, 0x20(%rax)
    0x102cc114c <+92>:  movq   0x18(%rax), %rax
    0x102cc1150 <+96>:  movq   %rax, (%r14)
    0x102cc1153 <+99>:  leaq   0x26(%rip), %rax          ; (1) await resume partial function for partial apply forwarder for reabstraction thunk helper from @escaping @callee_guaranteed @Sendable @async () -> (@owned Workstead.ProfileRegistration, @error @owned Swift.Error) to @escaping @callee_guaranteed @async () -> (@out Workstead.ProfileRegistration, @error @owned Swift.Error) at <compiler-generated>
    0x102cc115a <+106>: movq   %rax, 0x8(%r14)
    0x102cc115e <+110>: addq   [=17=]x30, %rsp
    0x102cc1162 <+114>: addq   [=17=]x10, %rsp
    0x102cc1166 <+118>: popq   %rbp
    0x102cc1167 <+119>: btrq   [=17=]x3c, %rbp
    0x102cc116c <+124>: jmp    0x102cc0f60               ; reabstraction thunk helper from @escaping @callee_guaranteed @Sendable @async () -> (@owned Workstead.ProfileRegistration, @error @owned Swift.Error) to @escaping @callee_guaranteed @async () -> (@out Workstead.ProfileRegistration, @error @owned Swift.Error) at <compiler-generated>

我向结构添加什么 属性 似乎并不重要,添加一个时它总是崩溃。当我删除 属性.

时它不会崩溃

我正在使用 Xcode 版本 13.3.1 (13E500a) 和 运行 iOS 15.4,在多个设备上测试

Xcode error screenshot

我有完全相同的错误。 如果我再向可编码结构添加一个字段,它就会崩溃。 在我的例子中,我有两个并发网络请求:

async let req1 = await someManager.fetch()
async let req2 = await someManager.get(id: uid)

let (result1, result2) = await (req1, req2)

我把它拆分为同步网络请求:

let result1 = await someManager.fetch()
let result2 = await someManager.get(id: uid)

它开始起作用了。

我认为 iOS 方面存在一些问题。 我使用 Xcode 13.4.