Ich habe plötzlich beobachtet, unten Absturz auf ein neues Update für eine meiner Apps zu beobachten. Es scheint ziemlich häufig zu passieren und ist verwirrend, da ich in den letzten 6 Monaten keine Änderungen an diesem Codeabschnitt vorgenommen habe. Ich habe mich gefragt, ob this (EXC_BAD_ACCESS beim Zurückgeben eines Wurf-Wörterbuchs) Swift Radarbug könnte relevant sein, wenn der Absturz aufgrund der Bildung des Params Dictionary für diese Anfrage ist.swift_unknownRelease Crash - SwiftHTTP
Aktualisieren Dieser Build wurde mit Swift 2.2 und Xcode 7.3 erstellt. SwiftHTTP ist v1.0.4. Ich sehe Abstürze mit dem Produktionsbinär auf iOS 8.3.0, 9.3.0 und 9.3.1. Dieses Problem ist am häufigsten (87%) auf iPhone 6, 6 Plus und 6s. Ich habe versucht, dieses Problem mit Xcode Zombies zu reproduzieren (wie here), aber es zeigte keine message sent to deallocated instance
Nachrichten in der Konsole.
Der Absturz tritt bei der Durchführung eines PUT-Updates in einer Hilfsklasse auf, die ich für die SwiftHTTP-Bibliothek habe.
Fehler
EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000020
Stack Trace
Thread : Crashed: com.apple.main-thread
0 libswiftCore.dylib 0x100d6d8f8 swift_unknownRelease + 24
1 SwiftHTTP 0x100b07298 _TTSf4g_n___TTSg5Ps9AnyObject____TFE9SwiftHTTPSa11createPairsfGSqSS_GSaVS_8HTTPPair_ + 700
2 SwiftHTTP 0x100b002f4 _TFE9SwiftHTTPVs10Dictionary11createPairsfGSqSS_GSaVS_8HTTPPair_ + 2000
3 SwiftHTTP 0x100b00f90 _TTWu0_Rxs8HashablerGVs10Dictionaryxq__9SwiftHTTP21HTTPParameterProtocolS1_FS2_11createPairsfGSqSS_GSaVS1_8HTTPPair_ + 112
4 SwiftHTTP 0x100b0178c _TFE9SwiftHTTPCSo19NSMutableURLRequest16appendParametersfzPS_21HTTPParameterProtocol_T_ + 396
5 SwiftHTTP 0x100af14a4 _TTWV9SwiftHTTP23HTTPParameterSerializerS_21HTTPSerializeProtocolS_FS1_9serializefzTCSo19NSMutableURLRequest10parametersPS_21HTTPParameterProtocol__T_ + 40
6 SwiftHTTP 0x100af8ccc _TTSf4gs_n_n_g_n_d___TZFC9SwiftHTTP4HTTP3NewfzTSS6methodOS_8HTTPVerb10parametersGSqPS_21HTTPParameterProtocol__7headersGSqGVs10DictionarySSSS__17requestSerializerPS_21HTTPSerializeProtocol__S0_ + 624
7 SwiftHTTP 0x100af5758 _TZFC9SwiftHTTP4HTTP3PUTfzTSS10parametersGSqPS_21HTTPParameterProtocol__7headersGSqGVs10DictionarySSSS__17requestSerializerPS_21HTTPSerializeProtocol__S0_ + 76
8 MyApp 0x1001274c0 SwiftHTTPUtilities.PUT(String, auth : String, params : [String : AnyObject]?, model : String, mode : APIUtilities.ApiRequestType, object : AnyObject?) ->() (SwiftHTTPUtilities.swift:52)
9 MyApp 0x100154e90 APIUtilities.(apiRequest(String, mode : APIUtilities.ApiRequestType, object : AnyObject?) ->()).(closure #3) (APIUtilities.swift:76)
10 MyApp 0x100152f70 partial apply for APIUtilities.(apiRequest(String, mode : APIUtilities.ApiRequestType, object : AnyObject?) ->()).(closure #3) (APIUtilities.swift)
11 libdispatch.dylib 0x18364d4bc _dispatch_call_block_and_release + 24
12 libdispatch.dylib 0x18364d47c _dispatch_client_callout + 16
13 libdispatch.dylib 0x183652b84 _dispatch_main_queue_callback_4CF + 1844
14 CoreFoundation 0x183bb8dd8 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
15 CoreFoundation 0x183bb6c40 __CFRunLoopRun + 1628
16 CoreFoundation 0x183ae0d10 CFRunLoopRunSpecific + 384
17 GraphicsServices 0x1853c8088 GSEventRunModal + 180
18 UIKit 0x188db5f70 UIApplicationMain + 204
19 MyApp 0x10026d508 main (AppDelegate.swift:25)
20 libdispatch.dylib 0x18367e8b8 (Missing)
SwiftHTTPUtilities (die eine Hilfsklasse ist mit der Open-Source-Bibliothek SwiftHTTP zu interagieren)
func PUT(apiPath: String, auth: String, params: Dictionary<String,AnyObject>?,model: String, mode: APIUtilities.ApiRequestType, object: AnyObject?) {
do {
//SYMBOLICATED CRASH REPORT IDENTIFIES BELOW LINE FOR EXC_BAD_ACCESS
let opt = try HTTP.PUT("\(apiPath)", parameters: params, headers: ["*removed*"])
opt.start { response in
if let err = response.error {
// print("error: \(err.localizedDescription)")
self.delegate?.didGetServerResponse(false, response: nil, error: response.error, model: model, mode: mode, object: object)
return //also notify app of failure as needed
}
// print("opt finished: \(response.description)")
//print("data is: \(response.data)") access the response of the data with response.data
self.delegate?.didGetServerResponse(true, response: response.data, error: nil, model: model, mode: mode, object: object)
}
} catch let error {
// print("got an error creating the request: \(error)")
self.delegate?.didGetServerResponse(false, response: nil, error: nil, model: model, mode: mode, object: object)
}
}
Haben Sie versucht zu reinigen und zu bauen? Manchmal ist der Crash nicht wirklich ein Crash in Swift. – Varun
Dieser Absturz wird in einer Produktions-Binärdatei im App Store beobachtet. Ich konnte den Absturz auf meinem physischen Gerät noch nicht replizieren (d. H. Das Auslösen dieser Funktion stürzt für mich nicht ab), aber ich habe die Berichte auf Crashlytics gesehen. – upperlacon
Ok. War es auf Swift 1.0 oder 2.0 gebaut? Und Xcode-Version? – Varun