2013-06-12 15 views
5

Nella mia app occasionalmente si verifica un arresto anomalo quando si naviga da una vista con uno GMSMapView in esso (lo si apre dal mio UINavigationController). E 'schiantarsi su filo 10, ed ecco le informazioni incidente:Google Maps iOS SDK incidente occasionale quando si distrugge GMSMapView

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Codes: KERN_INVALID_ADDRESS at 0x00000004 
Crashed Thread: 10 

E l'analisi dello stack per quel filo:

Thread 10 name: Dispatch queue: URLConnection 
Thread 10 Crashed: 
0 libsystem_c.dylib    0x39ef897c OSAtomicAdd32 + 0 
1 CoreData      0x31bf3de4 _PFfastQueueRelease + 24 
2 CoreData      0x31bd3ee8 -[NSManagedObject release] + 224 
3 CoreFoundation     0x31d2d30c CFRelease + 96 
4 CoreFoundation     0x31d47e96 -[__NSDictionaryM dealloc] + 130 
5 Trail Tracker GPS    0x00206076 -[GMSTileDataCache .cxx_destruct] + 162 
6 libobjc.A.dylib     0x39a90f3a object_cxxDestructFromClass(objc_object*, objc_class*) + 54 
7 libobjc.A.dylib     0x39a8e0ce objc_destructInstance + 30 
8 libobjc.A.dylib     0x39a8e3a2 object_dispose + 10 
9 Trail Tracker GPS    0x00201810 -[GMSTileDataCache dealloc] + 172 
10 Trail Tracker GPS    0x0030da12 -[GMSDASHTileService .cxx_destruct] + 318 
11 libobjc.A.dylib     0x39a90f3a object_cxxDestructFromClass(objc_object*, objc_class*) + 54 
12 libobjc.A.dylib     0x39a8e0ce objc_destructInstance + 30 
13 libobjc.A.dylib     0x39a8e3a2 object_dispose + 10 
14 Trail Tracker GPS    0x00309786 -[GMSDASHTileService dealloc] + 182 
15 libobjc.A.dylib     0x39a90f3a object_cxxDestructFromClass(objc_object*, objc_class*) + 54 
16 libobjc.A.dylib     0x39a8e0ce objc_destructInstance + 30 
17 libobjc.A.dylib     0x39a8e3a2 object_dispose + 10 
18 CoreFoundation     0x31d2d30c CFRelease + 96 
19 CoreFoundation     0x31d37a0e -[__NSArrayI dealloc] + 74 
20 Trail Tracker GPS    0x00230e84 -[GMSDASHStreamingBody .cxx_destruct] + 40 
21 libobjc.A.dylib     0x39a90f3a object_cxxDestructFromClass(objc_object*, objc_class*) + 54 
22 libobjc.A.dylib     0x39a8e0ce objc_destructInstance + 30 
23 libobjc.A.dylib     0x39a8e3a2 object_dispose + 10 
24 CoreFoundation     0x31d2d30c CFRelease + 96 
25 CFNetwork      0x31aececa CoreReadStreamFromCFReadStream::~CoreReadStreamFromCFReadStream() + 38 
26 CFNetwork      0x31aece8a CoreReadStreamFromCFReadStream::~CoreReadStreamFromCFReadStream() + 6 
27 CoreFoundation     0x31d2d3ce CFRelease + 290 
28 CFNetwork      0x31a4f7be HTTPRequest::~HTTPRequest() + 74 
29 CFNetwork      0x31a4f76a HTTPRequest::~HTTPRequest() + 6 
30 CoreFoundation     0x31d2d3ce CFRelease + 290 
31 CFNetwork      0x31a54992 URLRequest::~URLRequest() + 106 
32 CFNetwork      0x31a5491e URLRequest::~URLRequest() + 6 
33 CoreFoundation     0x31d2d3ce CFRelease + 290 
34 CFNetwork      0x31a4464c __CFURLCacheNode::~__CFURLCacheNode() + 40 
35 CFNetwork      0x31a429de __CFURLCacheNode::~__CFURLCacheNode() + 6 
36 CFNetwork      0x31a4f57e __CFURLCache::RemoveResponseFromCacheContainers(__CFURLCacheNode*, _CFCachedURLResponse const*, __CFString const*, bool) + 158 
37 CFNetwork      0x31a4d71e __CFURLCache::AddResponseIntoCacheContainers(__CFString const*, __CFURLCacheNode*, bool) + 102 
38 CFNetwork      0x31a4d652 __CFURLCache::CreateAndStoreCacheNode(__CFURLCacheNode*, _CFCachedURLResponse const*, __CFString const*, _CFURLRequest const*, void const*, bool, bool&) + 186 
39 CFNetwork      0x31a900c8 __CFURLCache::AddCacheTask0(__CFURLCacheNode*) + 320 
40 CFNetwork      0x31a8ff78 __CFURLCache::AddCacheTask(__CFURLCacheNode*) + 28 
41 CFNetwork      0x31a4d55e CFURLCacheAddCachedResponseForRequest + 622 
42 CFNetwork      0x31ac7ac4 ___internalEvent_WillCacheResponse_block_invoke_0 + 28 
43 CFNetwork      0x31ac91ca URLConnectionClient_Classic::_delegate_willCacheResponse(_CFCachedURLResponse const*, void()(_CFCachedURLResponse const*) block_pointer) + 42 
44 CFNetwork      0x31ac7a96 URLConnectionClient::_internalEvent_WillCacheResponse() + 586 
45 CFNetwork      0x31ac7b8c URLConnectionClient::_clientEvent_DidFinishLoading() + 172 
46 CFNetwork      0x31acdaa8 ___withClientAsync_block_invoke_0 + 20 
47 CFNetwork      0x31ac6426 ___withWorkQueueAsync_block_invoke_0 + 10 
48 CFNetwork      0x31af0e34 ___performAsync_block_invoke_0 + 24 
49 libdispatch.dylib    0x39ea911c _dispatch_call_block_and_release + 8 
50 libdispatch.dylib    0x39ea8996 _dispatch_queue_drain$VARIANT$up + 142 
51 libdispatch.dylib    0x39ea8890 _dispatch_queue_invoke$VARIANT$up + 32 
52 libdispatch.dylib    0x39eb7212 _dispatch_root_queue_drain + 190 
53 libdispatch.dylib    0x39eb73b4 _dispatch_worker_thread2 + 80 
54 libsystem_c.dylib    0x39edda0e _pthread_wqthread + 358 
55 libsystem_c.dylib    0x39edd8a0 start_wqthread + 4` 

Qualcuno ha crash come questo visto da GMSMapView oppure Google Maps SDK?

+0

Puoi mostrarci cosa fai in quel thread, se è il tuo? Ho avuto un crash simile nel codice che ho scritto e il problema era questo: ho postato un blocco nella coda concorrente globale; quel blocco ha creato un nuovo contesto di oggetti gestiti di Core Data, ha fatto un sacco di cose ed è uscito. L'arresto anomalo si è verificato perché alcuni oggetti gestiti erano in grado di sopravvivere a tale contesto sedendosi nel pool di autorelease, presumibilmente ne ho fornito uno come risultato di ritorno. Quindi la soluzione era di avvolgere tutto tra il contesto creato e esplicitamente distrutto in un '@ autoreleasepool'. – Tommy

+0

Il thread non è mio. Presumo che Google Maps recuperi o aggiorni le tessere. –

risposta

0

Ho riscontrato questo problema con Xcode 5 - DP 5 e una versione precedente di Google Maps SDK. Ho aggiornato l'SDK e le cose sembravano andare via.