2016-08-06 12 views
1

オープンベータ版であるため、ここでベータ版のiOS10の問題を投稿しても問題ありません。アップルのフォーラムは、Stackoverflowで得られる助けに近づくことはありません。iOS10オープンベータ版 - iOSコアのデータがクラッシュして保存される

CoreDataにmanagedObjectContextを保存すると、私たちのユーザーはiOS10にアップデートされて以来、一定のクラッシュが発生しています。

これは、iOS 5それだけiOS10の64ビット版で発生

ので、完璧に働いているものです。 32ビットバージョンは正常に動作します。 (それは、シミュレータで動作し、上記のようにのNSLogは、何も報告しない)

[self.managedObjectContext performBlockAndWait:^{ 
    NSError *error; 
    if (![self.managedObjectContext save:&error]) 
    { 
     NSLog(@"\n\nerror in save 1 %@\n\n", error); 
    } 
}]; 

[self.managedObjectContext performBlock:^{ 
    NSError *error; 
    if (![_privateWriterContext save:&error]) 
    { 
     NSLog(@"\n\nerror in save 2 %@\n\n", error); 
    } 
}]; 

:ここ

は私の簡単なコードスニップを保存しています。

これは、64ビットデバイスでのみ失敗します。私はシミュレータでは複製できません。私はまた、私の唯一の64ビットデバイスがXcodeに正しく接続していないという問題のため、デバイス上のデバッグでは複製できません。だから私はちょっと立ち往生している。以下は

は、ユーザーから報告されたサンプルのスタックトレースです:

Incident Identifier: 7A8DD23B-48A2-4ABF-88E7-67F1E6CDA8D5 
CrashReporter Key: 5454e7c7b99a94cd75b6adfa8334bbdf10b859eb 
Hardware Model:  iPhone8,1 
Code Type:   ARM-64 (Native) 
Role:    Foreground 
Parent Process:  launchd [1] 



Date/Time:   2016-07-20 22:23:00.1429 -0400 
Launch Time:   2016-07-20 22:21:30.6058 -0400 
OS Version:   iPhone OS 10.0 (14A5309d) 
Report Version:  104 

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000985e4beb8 
Triggered by Thread: 0 

Thread 0 name: 
Thread 0 Crashed: 
0 libobjc.A.dylib     0x00000001850e6eb0 objc_msgSend + 16 
1 CoreFoundation     0x0000000185a76740 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 20 (CFNotificationCenter.c:650) 
2 CoreFoundation     0x0000000185a75e44 _CFXRegistrationPost + 400 (CFNotificationCenter.c:164) 
3 CoreFoundation     0x0000000185a75bc0 ___CFXNotificationPost_block_invoke + 60 (CFNotificationCenter.c:1031) 
4 CoreFoundation     0x0000000185ae40cc -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1504 (CFXNotificationRegistrar.m:163) 
5 CoreFoundation     0x00000001859b9484 _CFXNotificationPost + 376 (CFNotificationCenter.c:1028) 
6 Foundation      0x000000018644e9dc -[NSNotificationCenter postNotificationName:object:userInfo:] + 68 (NSNotification.m:482) 
7 CoreData      0x0000000187e1dbf4 -[NSManagedObjectContext(_NSInternalNotificationHandling) _postContextDidSaveNotificationWithUserInfo:] + 880 (NSManagedObjectContext.m:7381) 
8 CoreData      0x0000000187dabb4c -[NSManagedObjectContext(_NSInternalAdditions) _didSaveChanges] + 2156 (NSManagedObjectContext.m:5827) 
9 CoreData      0x0000000187d98570 -[NSManagedObjectContext save:] + 3440 (NSManagedObjectContext.m:1532) 
10 App        0x000000010008db34 __29-[RPSAppDelegate saveContext]_block_invoke227 + 52 (RPSAppDelegate.m:338) 
11 CoreData      0x0000000187e17c68 developerSubmittedBlockToNSManagedObjectContextPerform + 168 (NSManagedObjectContext.m:3529) 
12 libdispatch.dylib    0x0000000185525784 _dispatch_client_callout + 16 (object.m:455) 
13 libdispatch.dylib    0x000000018552a330 _dispatch_main_queue_callback_4CF + 1000 (inline_internal.h:2421) 
14 CoreFoundation     0x0000000185a8a0cc __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12 (CFRunLoop.c:1793) 
15 CoreFoundation     0x0000000185a87cb8 __CFRunLoopRun + 1660 (CFRunLoop.c:3004) 
16 CoreFoundation     0x00000001859b78d8 CFRunLoopRunSpecific + 444 (CFRunLoop.c:3113) 
17 GraphicsServices    0x00000001873be198 GSEventRunModal + 180 (GSEvent.c:2245) 
18 UIKit       0x000000018b9617c8 -[UIApplication _run] + 664 (UIApplication.m:2651) 
19 UIKit       0x000000018b95c534 UIApplicationMain + 208 (UIApplication.m:4088) 
20 App        0x000000010008c138 main + 152 (main.m:27) 
21 libdyld.dylib     0x00000001855585b8 start + 4 

は、任意のアイデアをいただき、ありがとうございます。

答えて

3

managedObjectContextのブロックコールで_privateWriterContextを保存しています。これは許可されていません。それが前に働いたという事実は「偽陽性」です。

代わりに、ブロックを作成するのと同じコンテキストで常に使用する必要があります。

+0

Yikes!ありがとうございました。私はそれをあまりにも凝視していて、私はそれを見ていませんでした。それは前に働いたとは信じられない。再度、感謝します! – mtb

+0

これは公開されていない別の根本的な問題を修正したかもしれませんが、明らかに上記のクラッシュの原因ではありませんでした。他のアイデアや提案はありますか? – mtb

関連する問題