获取线程 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.
我有一个 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.