Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

EXC_BAD_ACCESS KERN_INVALID_ADDRESS crash

My app has been running fine in debugging mode through Xcode, but whenever it's downloaded through TestFlight, it crashes with this error: EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x000200013f7b9e78.

It's crashing at this line. I see specialized Array.withUnsafeMutableBufferPoint in this stack trace that it's probably related to.

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

In Swift 1.3 I was using sort, and now in Swift 2 I'm using sortInPlace. Not sure if this makes a difference, but I do know that the result of sort isn't called because it's 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's populated by appending a series of dictionaries, like this.

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

My concern is that its within a dispatch_group_notify; it's waiting on series of dispatch_group_leaves. Could that have something to do with it? That looks like this:

dispatch_group_notify(group, queue) { () -> Void in

      self.array.sortInPlace {
          (($0["foo"] as? Int) > (($1 )["foo"] as? Int))
      }
}
like image 518
slider Avatar asked Nov 06 '15 23:11

slider


1 Answers

I'm getting the same issue but it only affects ~50% of devices, and only those running the release version of the app. My code is not using anything like dispatch_group.

In my case I was using code such as:

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 it only affects a limited amount of users, crashes in a low level Swift API, and is fixed by replacing with sort, I believe this is a bug in Apple's code.

I recommend filing a bug with Apple and using sort in the meantime.

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

Update: Many people are experiencing the same issue on the apple forums. It seems to be fixed in the latest Xcode beta according to that thread.

like image 52
Senseful Avatar answered Nov 13 '22 21:11

Senseful