Error EXC_BAD_ACCESS KERN_INVALID_ADDRESS

My application works fine in debug mode using Xcode, but whenever it loads through TestFlight, it crashes with this error: EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x000200013f7b9e78 .

It collapses on this line. I see specialized Array.withUnsafeMutableBufferPoint in this stack trace, with which it is probably associated.

 self.array.sortInPlace. { (($0 as Dictionary<String, AnyObject>)["time"] as? String) > (($1 as Dictionary<String, AnyObject>)["time"] as? String) } 

In Swift 1.3 I used sort , and now in Swift 2 I use sortInPlace . Not sure if this matters, but I know that the result of sort not being called because it is immutable.

 Thread : Crashed: com.apple.main-thread 0 libswiftCore.dylib 4302688056 _swift_retain_(swift::HeapObject*) + 8 1 App 4295962040 specialized LiveFeedViewController.(viewDidLoad(LiveFeedViewController) -> () -> ()).(closure #3).(closure #1) (LiveFeedViewController.swift) 2 App 4295785356 specialized thunk (LiveFeedViewController.swift) 3 App 4295953880 specialized _siftDown<A where ...> (inout A, A.Index, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool) -> () (LiveFeedViewController.swift) 4 App 4295952448 specialized _heapSort<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool) -> () (LiveFeedViewController.swift) 5 App 4295938144 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) -> () (LiveFeedViewController.swift) 6 App 4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) -> () (LiveFeedViewController.swift) 7 App 4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) -> () (LiveFeedViewController.swift) 8 App 4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) -> () (LiveFeedViewController.swift) 9 App 4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) -> () (LiveFeedViewController.swift) 10 App 4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) -> () (LiveFeedViewController.swift) 11 App 4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) -> () (LiveFeedViewController.swift) 12 App 4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) -> () (LiveFeedViewController.swift) 13 App 4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) -> () (LiveFeedViewController.swift) 14 App 4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) -> () (LiveFeedViewController.swift) 15 App 4295960640 specialized specialized MutableCollectionType<A where ...>.sortInPlace<A where ...>((A.Generator.Element, A.Generator.Element) -> Bool) -> () (LiveFeedViewController.swift) 16 App 4295730388 _TPA__TTSg5GSaGVSs10DictionarySSPSs9AnyObject___GSaGS_SSPS0____Ss21MutableCollectionTypeSs_GVSs17IndexingGeneratorGSaGS_SSPS0_____GS2_GSaGS_SSPS0_____Ss13GeneratorTypeSs_GS_SSPS0____SiSiSs21RandomAccessIndexTypeSs_SiSiSs18_SignedIntegerTypeSs_SiSiSs33_BuiltinIntegerLiteralConvertibleSs_SiSiSs16SignedNumberTypeSs_SiSiS6_Ss_Si_GVSs10ArraySliceGS_SSPS0____GS8_GS_SSPS0____Ss9IndexableSsGS8_GS_SSPS0____Ss12SequenceTypeSs_GS2_GS8_GS_SSPS0_____GS2_GS8_GS_SSPS0_____S3_Ss_GS_SSPS0____SiSiSs16ForwardIndexTypeSs_SiSiS5_Ss_SiSiS6_Ss_Si_GS8_GS_SSPS0_____GS_SSPS0____GS_SSPS0______TFFeRq_Ss21MutableCollectionTypeqq_Ss16MutableIndexable5IndexSs21RandomAccessIndexType_SsS_11sortInPlaceuRq_S_qq_S0_5IndexS1__FRq_FFTqqq_Ss14CollectionType9GeneratorSs13GeneratorType7Elementqqq_S2_9GeneratorS3_7Element_SbT_U_FTGVSs20UnsafeMutablePointerQQQPS_9Generator7Element_Si_T_ (LiveFeedViewController.swift) 17 App 4295730548 _TPA__TTSg5GSaGVSs10DictionarySSPSs9AnyObject___GSaGS_SSPS0____Ss21MutableCollectionTypeSs_GVSs17IndexingGeneratorGSaGS_SSPS0_____GS2_GSaGS_SSPS0_____Ss13GeneratorTypeSs_GS_SSPS0____SiSiSs21RandomAccessIndexTypeSs_SiSiSs18_SignedIntegerTypeSs_SiSiSs33_BuiltinIntegerLiteralConvertibleSs_SiSiSs16SignedNumberTypeSs_SiSiS6_Ss_Si_GVSs10ArraySliceGS_SSPS0____GS8_GS_SSPS0____Ss9IndexableSsGS8_GS_SSPS0____Ss12SequenceTypeSs_GS2_GS8_GS_SSPS0_____GS2_GS8_GS_SSPS0_____S3_Ss_GS_SSPS0____SiSiSs16ForwardIndexTypeSs_SiSiS5_Ss_SiSiS6_Ss_Si_GS8_GS_SSPS0_____GS_SSPS0____GS_SSPS0______TTRGRq_Ss21MutableCollectionTypeqq_Ss16MutableIndexable5IndexSs21RandomAccessIndexType_XFo_dGVSs20UnsafeMutablePointerqqq_Ss14CollectionType9GeneratorSs13GeneratorType7Element_dSi_dT_zoPSs9ErrorType__XFo_dGS2_qqq_S3_9GeneratorS4_7Element_dSi_iT_zoPS5___ (LiveFeedViewController.swift) 18 App 4295730716 _TPA__TTSg5GVSs10DictionarySSPSs9AnyObject___T____TFFSa42_withUnsafeMutableBufferPointerIfSupportedu__rFRGSaq__FzFzTGVSs20UnsafeMutablePointerq__Si_qd__GSqqd___U_FzRGVSs26UnsafeMutableBufferPointerQd___Q_ (LiveFeedViewController.swift) 19 App 4295954668 specialized Array.withUnsafeMutableBufferPointer<A><B>((inout UnsafeMutableBufferPointer<A>) throws -> B) throws -> B (LiveFeedViewController.swift) 20 App 4295959880 specialized specialized MutableCollectionType<A where ...>.sortInPlace<A where ...>((A.Generator.Element, A.Generator.Element) -> Bool) -> () (LiveFeedViewController.swift) 21 App 4295895596 LiveFeedViewController.(viewDidLoad(LiveFeedViewController) -> () -> ()).(closure #3) (LiveFeedViewController.swift:1862) 22 libdispatch.dylib 6875551464 _dispatch_call_block_and_release + 24 23 libdispatch.dylib 6875551400 _dispatch_client_callout + 16 24 libdispatch.dylib 6875573680 _dispatch_main_queue_callback_4CF + 1844 25 CoreFoundation 6518931960 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12 26 CoreFoundation 6518923360 __CFRunLoopRun + 1628 27 CoreFoundation 6518066336 CFRunLoopRunSpecific + 384 28 GraphicsServices 6704955528 GSEventRunModal + 180 29 UIKit 6609391612 UIApplicationMain + 204 30 App 4296344512 main (AppDelegate.swift:23) 31 libdyld.dylib 6875752632 start + 4 

UPDATE:

This is all in Swift 2, and the array is an array of dictionaries declared as var array = [[String:AnyObject]]() . It is populated by the addition of a number of dictionaries, such as.

 self.dict["foo"] = 0 self.dict["bar"] = "dog" self.array.append(self.dict) 

My concern is that it is inside dispatch_group_notify ; he is waiting for the dispatch_group_leave s series. Can this do something about it? It looks like this:

 dispatch_group_notify(group, queue) { () -> Void in self.array.sortInPlace { (($0["foo"] as? Int) > (($1 )["foo"] as? Int)) } } 
+5
source share
4 answers

I get the same problem, but it affects only 50% of devices and only those that work with version version . My code does not use anything like dispatch_group .

In my case, I used code like:

 contacts.sortInPlace({ $0.name.localizedCaseInsensitiveCompare($1.name) == .OrderedAscending }) 

It was fixed when I replaced it with:

 contacts = contacts.sort({ $0.name.localizedCaseInsensitiveCompare($1.name) == .OrderedAscending }) 

Since this affects only a limited number of users, it crashes with the low-level Swift API and is fixed by replacing sort , I believe this is an error in the Apple code.

I recommend filing an error with Apple and using sort in the meantime.

Note. Another similarity between your code and mine is the use of shortened argument names (i.e. $ 0 and $ 1). However, even if I replace the names with named arguments, it still fails.

Refresh . Many people experience the same problem on Apple forums . It seems to be fixed in the latest version of Xcode according to this thread.

+4
source

Regarding the code in UPDATE:

Since the array is filled manually, the most reliable (and efficient and appropriate for the safe Swift type) is to use a custom class with optional properties, and not with a common dictionary.

 class Item { var foo : Int var bar : String init(foo : Int, bar : String) { self.foo = foo self.bar = bar } } var array = [Item]() array.append(Item(foo: 0, bar: "dog")) array.append(Item(foo: 1, bar: "cat")) array.sortInPlace { $0.foo > $1.foo } 

All types are well known and optional.

No casting, no deployment, no overhead, no problem.

+3
source

This is an old question, but the main reason it is difficult to reproduce EXC_BAD_ACCESS KERN_INVALID_ADDRESS in debug runs is because the life cycle of the freed object differs in debug versions and release versions. In the latter case, the memory immediately disappears and, possibly, is replaced by an unrelated object, while in the former case, the memory can be stored for a short time, so your application can still cut without problems. Also, when this happens in the release version, the last line of the failure trace may be confusing, because the mentioned object may have some completely unrelated type. If this is the case, we should look a bit at the stack tree and hopefully find additional clues there.

0
source

In one case, I encountered this error: I declared a nonnull property in Objective-C, but forgot to initialize it, and then try to use it in Swift.

0
source

Source: https://habr.com/ru/post/1235400/


All Articles