SkygearIO / skygear-SDK-iOS

Skygear SDK for iOS
https://skygear.io
Other
10 stars 28 forks source link

EXC_BAD_ACCESS at random location #129

Open cheungpat opened 7 years ago

cheungpat commented 7 years ago

On Xcode 8.3.3 and iOS 10.3, using SKYKit 1.1.0 with the following code in ViewController.swift (single-view application) will cause the app to crash in Simultor.

import UIKit
import SKYKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        let skygear = SKYContainer.default()
        skygear.auth.signupAnonymously(completionHandler: { (user, error) in
            if error != nil {
                print("Signup Error: \(error?.localizedDescription)")
                return
            }

            let test = SKYRecord(recordType: "test")
            test.setObject("Hello world", forKey: "content" as NSCopying!)
            print("Record saved with ID test: \(test.recordID.recordName)")
        })
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

Stack trace:

Thread 1Queue : com.apple.main-thread (serial)
#0  0x0000000100f39d5b in objc_release ()
#1  0x0000000100906c8e in -[SKYRecord .cxx_destruct] at /Users/cheungpat/Desktop/lalala/Pods/SKYKit/Pod/Classes/SKYRecord.m:33
#2  0x0000000100f249bc in object_cxxDestructFromClass(objc_object*, objc_class*) ()
#3  0x0000000100f30d34 in objc_destructInstance ()
#4  0x0000000100f30d66 in object_dispose ()
#5  0x0000000100f3ab8e in objc_object::sidetable_release(bool) ()
#6  0x00000001007e8478 in ViewController.(viewDidAppear(Bool) -> ()).(closure #1) at /Users/cheungpat/Desktop/lalala/lalala/ViewController.swift:53
#7  0x00000001007e859d in thunk ()
#8  0x00000001008ca978 in __63-[SKYAuthContainer performUserAuthOperation:completionHandler:]_block_invoke_2 at /Users/cheungpat/Desktop/lalala/Pods/SKYKit/Pod/Classes/SKYAuthContainer.m:95
#9  0x0000000103c544a6 in _dispatch_call_block_and_release ()
#10 0x0000000103c7d05c in _dispatch_client_callout ()
#11 0x0000000103c5e40b in _dispatch_main_queue_callback_4CF ()
#12 0x000000010373d909 in __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ ()
#13 0x0000000103703ae4 in __CFRunLoopRun ()
#14 0x0000000103703016 in CFRunLoopRunSpecific ()
#15 0x0000000105e1ca24 in GSEventRunModal ()
#16 0x00000001013f8134 in UIApplicationMain ()
#17 0x00000001007e9977 in main at /Users/cheungpat/Desktop/lalala/lalala/AppDelegate.swift:13
#18 0x0000000103cc965d in start ()
#19 0x0000000103cc965d in start ()
Enqueued from com.apple.root.utility-qos (Thread 3)Queue : com.apple.root.utility-qos (serial)
#0  0x0000000103c59188 in _dispatch_queue_push ()
#1  0x00000001008ca8be in __63-[SKYAuthContainer performUserAuthOperation:completionHandler:]_block_invoke at /Users/cheungpat/Desktop/lalala/Pods/SKYKit/Pod/Classes/SKYAuthContainer.m:94
#2  0x000000010092598d in __51-[SKYSignupUserOperation setSignupCompletionBlock:]_block_invoke at /Users/cheungpat/Desktop/lalala/Pods/SKYKit/Pod/Classes/SKYSignupUserOperation.m:134
#3  0x0000000100b1fa6d in __103+[__NSOperationInternal _observeValueForKeyPath:ofObject:changeKind:oldValue:newValue:indexes:context:]_block_invoke.119 ()
#4  0x0000000103c544a6 in _dispatch_call_block_and_release ()
#5  0x0000000103c7d05c in _dispatch_client_callout ()
#6  0x0000000103c5f198 in _dispatch_root_queue_drain ()
#7  0x0000000103c5ebef in _dispatch_worker_thread3 ()
#8  0x00000001040ee1ca in _pthread_wqthread ()
#9  0x00000001040edc4d in start_wqthread ()
Enqueued from NSOperationQueue 0x610000032fa0 :: NSOperation 0x61000005b240 (QOS: DEFAULT) (Thread 7)Queue : NSOperationQueue 0x610000032fa0 :: NSOperation 0x61000005b240 (QOS: DEFAULT) (serial)
#0  0x0000000103c59188 in _dispatch_queue_push ()
#1  0x0000000100a2fe68 in +[__NSOperationInternal _observeValueForKeyPath:ofObject:changeKind:oldValue:newValue:indexes:context:] ()
#2  0x0000000100a2f771 in NSKeyValueNotifyObserver ()
#3  0x0000000100a2f113 in NSKeyValueDidChange ()
#4  0x00000001009ff889 in -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:] ()
#5  0x00000001008f36eb in -[SKYOperation setFinished:] at /Users/cheungpat/Desktop/lalala/Pods/SKYKit/Pod/Classes/SKYOperation.m:87
#6  0x00000001008f4c36 in -[SKYOperation handleRequestCompletionWithData:response:error:] at /Users/cheungpat/Desktop/lalala/Pods/SKYKit/Pod/Classes/SKYOperation.m:259
#7  0x00000001008f3b97 in __54-[SKYOperation makeURLSessionTaskWithSession:request:]_block_invoke at /Users/cheungpat/Desktop/lalala/Pods/SKYKit/Pod/Classes/SKYOperation.m:123
#8  0x0000000104a8787b in __75-[__NSURLSessionLocal taskForClass:request:uploadFile:bodyData:completion:]_block_invoke ()
#9  0x0000000104a87095 in __49-[__NSCFLocalSessionTask _task_onqueue_didFinish]_block_invoke ()
#10 0x0000000100a303b7 in __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ ()
#11 0x0000000100a300bb in -[NSBlockOperation main] ()
#12 0x0000000100a2e877 in -[__NSOperationInternal _start:] ()
#13 0x0000000100a2a5fc in __NSOQSchedule_f ()
#14 0x0000000103c7d05c in _dispatch_client_callout ()
#15 0x0000000103c5b94f in _dispatch_queue_serial_drain ()
#16 0x0000000103c5c669 in _dispatch_queue_invoke ()
#17 0x0000000103c5eec4 in _dispatch_root_queue_drain ()
#18 0x0000000103c5ebef in _dispatch_worker_thread3 ()
#19 0x00000001040ee1ca in _pthread_wqthread ()
#20 0x00000001040edc4d in start_wqthread ()
Enqueued from com.apple.NSURLSession-work (Thread 3)Queue : com.apple.NSURLSession-work (serial)
#0  0x0000000103c59188 in _dispatch_queue_push ()
#1  0x00000001009f57d1 in __NSOQSchedule ()
#2  0x0000000100a29c4a in __addOperations ()
#3  0x0000000104a8647a in -[__NSCFLocalSessionTask _task_onqueue_didFinish] ()
#4  0x0000000104a862c8 in -[__NSCFLocalSessionTask connection:didFinishLoadingWithError:] ()
#5  0x0000000104a86214 in __51-[__NSCFURLLocalSessionConnection _task_sendFinish]_block_invoke ()
#6  0x0000000104a86193 in -[__NSCFURLLocalSessionConnection _task_sendFinish] ()
#7  0x0000000104a83c96 in -[__NSCFURLLocalSessionConnection _didFinishWithError:] ()
#8  0x0000000104a822b7 in ___ZN25SessionConnectionLoadable21withLoaderClientAsyncEU13block_pointerFvP21LoaderClientInterfaceE_block_invoke ()
#9  0x0000000103c544a6 in _dispatch_call_block_and_release ()
#10 0x0000000103c7d05c in _dispatch_client_callout ()
#11 0x0000000103c5b94f in _dispatch_queue_serial_drain ()
#12 0x0000000103c5c669 in _dispatch_queue_invoke ()
#13 0x0000000103c5eec4 in _dispatch_root_queue_drain ()
#14 0x0000000103c5ebef in _dispatch_worker_thread3 ()
#15 0x00000001040ee1ca in _pthread_wqthread ()
#16 0x00000001040edc4d in start_wqthread ()
Enqueued from com.apple.NSURLSession-work (Thread 3)Queue : com.apple.NSURLSession-work (serial)
#0  0x0000000103c59188 in _dispatch_queue_push ()
#1  0x0000000104a775f2 in -[__NSCFURLSessionConnection withWorkQueueAsync:] ()
#2  0x0000000104a82292 in SessionConnectionLoadable::withLoaderClientAsync(void (LoaderClientInterface*) block_pointer) ()
#3  0x0000000104a917ef in URLConnectionLoader::protocolDidFinishLoading() ()
#4  0x0000000104a7c4d2 in ___ZNK25URLConnectionInstanceData18withWorkQueueAsyncEU13block_pointerFvvE_block_invoke ()
#5  0x0000000103c544a6 in _dispatch_call_block_and_release ()
#6  0x0000000103c7d05c in _dispatch_client_callout ()
#7  0x0000000103c5b94f in _dispatch_queue_serial_drain ()
#8  0x0000000103c5c669 in _dispatch_queue_invoke ()
#9  0x0000000103c5eec4 in _dispatch_root_queue_drain ()
#10 0x0000000103c5ebef in _dispatch_worker_thread3 ()
#11 0x00000001040ee1ca in _pthread_wqthread ()
#12 0x00000001040edc4d in start_wqthread ()
Enqueued from com.apple.root.default-qos.overcommit (Thread 10)Queue : com.apple.root.default-qos.overcommit (serial)
#0  0x0000000103c59188 in _dispatch_queue_push ()
#1  0x0000000104a7c4b7 in URLConnectionInstanceData::withWorkQueueAsync(void () block_pointer) const ()
#2  0x0000000104a90bf3 in non-virtual thunk to URLConnectionLoader_Classic::protocolDidFinishLoading() ()
#3  0x0000000104adc2d5 in URLProtocol::sendDidFinishLoading() ()
#4  0x0000000104adb71f in HTTPProtocol::endEncountered() ()
#5  0x0000000104ad9e3c in HTTPProtocol::handleStreamEvent(__CFHTTPMessage*, dispatch_data_s*, CFStreamError const*) ()
#6  0x0000000103c7d05c in _dispatch_client_callout ()
#7  0x0000000103c5850a in _dispatch_block_invoke_direct ()
#8  0x0000000104a8ef88 in RunloopBlockContext::_invoke_block(void const*, void*) ()
#9  0x00000001036cbbe4 in CFArrayApplyFunction ()
#10 0x0000000104a8ee5e in RunloopBlockContext::perform() ()
#11 0x0000000104a8ecf8 in MultiplexerSource::perform() ()
#12 0x0000000104a8eb2b in MultiplexerSource::_perform(void*) ()
#13 0x000000010371ec01 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ()
#14 0x00000001037040cf in __CFRunLoopDoSources0 ()
#15 0x00000001037035ff in __CFRunLoopRun ()
#16 0x0000000103703016 in CFRunLoopRunSpecific ()
#17 0x0000000104a6bdff in +[NSURLConnection(Loader) _resourceLoadLoop:] ()
#18 0x0000000100a1f131 in __NSThread__start__ ()
#19 0x00000001040ee6c1 in _pthread_body ()
#20 0x00000001040ee56d in _pthread_start ()
#21 0x00000001040edc5d in thread_start ()

Doing one of the following will not make the app crash:

cheungpat commented 7 years ago

cc @peter-chengtsztung