iOS 6 Maps случайный сбой
Я иногда получаю сбой с iOS 6 MapKit. Не могу воспроизвести это. Что может вызвать это?
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000044
Crashed Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 IMGSGX543GLDriver 0x38f231b4 sgxTextureGetImageRowBytes(GLDTextureRec*, unsigned int, unsigned int) + 8
1 IMGSGX543GLDriver 0x38f23160 CalculateChunkPlaneSizes(GLDTextureRec*, int, unsigned int*, unsigned int*, unsigned int*, unsigned int*) + 104
2 IMGSGX543GLDriver 0x38f25906 sgxConfigureTexturePrivate(GLDTextureRec*) + 82
3 IMGSGX543GLDriver 0x38f24584 glrUpdateTexture + 616
4 libGPUSupportMercury.dylib 0x342c76b6 gldLoadFramebuffer + 102
5 GLEngine 0x31b50e52 gleUpdateDrawFramebufferState + 178
6 GLEngine 0x31b52556 gleDoDrawDispatchCoreES2 + 126
7 GLEngine 0x31aedbc0 gleDrawArraysOrElements_Entries_Body + 140
8 GLEngine 0x31aea5ec glDrawArrays_ES2Exec + 160
9 VectorKit 0x3780dcd6 -[VKSkyModel drawScene:withContext:] + 326
10 VectorKit 0x377e76d6 -[VKModelObject recursiveDrawScene:whenReadyWithContext:] + 118
11 VectorKit 0x377621ea -[VKMapModel recursiveDrawScene:withContext:] + 278
12 VectorKit 0x37762096 -[VKModelObject recursiveDrawScene:withContext:] + 186
13 VectorKit 0x3775d4da -[VKScreenCanvas onTimerFired:] + 1014
14 VectorKit 0x3775b548 -[VKMapCanvas onTimerFired:] + 500
15 VectorKit 0x3775a3d2 -[VKMainLoop displayTimerFired:] + 610
16 QuartzCore 0x3095b06c CA::Display::DisplayLink::dispatch(unsigned long long, unsigned long long) + 156
17 QuartzCore 0x3095afc4 CA::Display::IOMFBDisplayLink::callback(__IOMobileFramebuffer*, unsigned long long, unsigned long long, unsigned long long, void*) + 60
18 IOMobileFramebuffer 0x331e4fd4 IOMobileFramebufferVsyncNotifyFunc + 152
19 IOKit 0x36fc4446 IODispatchCalloutFromCFMessage + 190
20 CoreFoundation 0x382a95d8 __CFMachPortPerform + 116
21 CoreFoundation 0x382b4170 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 32
22 CoreFoundation 0x382b4112 __CFRunLoopDoSource1 + 134
23 CoreFoundation 0x382b2f94 __CFRunLoopRun + 1380
24 CoreFoundation 0x38225eb8 CFRunLoopRunSpecific + 352
25 CoreFoundation 0x38225d44 CFRunLoopRunInMode + 100
26 GraphicsServices 0x3415f2e6 GSEventRunModal + 70
27 UIKit 0x351b72fc UIApplicationMain + 1116
28 MyApp 0x0005d78a main (main.m:14)
29 MyApp 0x0005d744 start + 36
4 ответа
Я нашел это. Это может помочь вам решить вашу проблему.
"Проблема: приложение на основе OpenGL ES отображает" мигающие "или" устаревшие "кадры после вызова presentRenderBuffer. Этот признак может возникнуть, когда приложение OpenGL ES вызывает метод presentRenderbuffer EAGL без предварительного отрисовки чего-либо. То, что видно на экране, может содержать неинициализированные пиксели или ранее отображенные кадры. Чтобы исправить эту проблему, вы всегда должны рисовать что-то в свой кадровый буфер перед вызовом presentRenderbuffer. Также обратите внимание, что, если вы не установите свойство RetainedBackbuffer для своего CAEAGLLayer для включения режима сохраненного обратного буфера, содержимое вашего визуализирующего буфера не гарантируется. оставаться в силе после вызова настоящего Renderbuffer ".
-Льюис
Я действительно обнаружил проблему с версией iOS. Пользователь работал на iPad 4, iOS 6.1.2, как только я обновился до 6.1.3, проблема исчезла. Надеюсь, это кому-нибудь поможет.
Спасибо Тим
У меня была именно эта проблема, и это оказалось сбой, связанный с давлением памяти. Я постоянно терпел крах, когда карта появлялась с черным фоном вместо плиток или фонов сетки, как обычно, в четвертый или пятый раз, когда карта была показана. Это произошло на iOS 6.0 и 6.1 и бета-версии 7.0.
Мой контроллер представления с видом карты не был освобожден после того, как он был удален из стека навигации, и у него была сильная ссылка на вид карты, который держал его в памяти.
После исправления моей утечки проблема исчезла.
Я только что испытал это тестирование приложения на своем iPad. Он всегда запускается без проблем в симуляторе, а также на устройстве, но сейчас он завис в одной и той же точке с той же ошибкой.
Вот мой метод - очень простая карта, показывающая местоположение пользователя и без аннотаций:
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
MKCoordinateSpan span = self.mapView.region.span;
zoomLevel = span.latitudeDelta;
shouldAdjustZoom = NO;
}
Вот журнал сбоя
Incident Identifier: 01AE9C88-1F56-44D4-92A1-C6B5938DEBD4
CrashReporter Key: f372f86613043286b74e70a8d1f9d7b1b5313cf5
Hardware Model: iPad3,4
Process: MyApp [1247]
Path: /var/mobile/Applications/C39AEC49-8DB1-45DE-B175-A6AEC19D533F/MyApp.app/MyApp
Identifier: MyApp
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2013-07-15 08:25:16.390 +0200
OS Version: iOS 6.1.3 (10B329)
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000044
Crashed Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 IMGSGX554GLDriver 0x32ea6be0 0x32e99000 + 56288
1 IMGSGX554GLDriver 0x32ea6b8e 0x32e99000 + 56206
2 IMGSGX554GLDriver 0x32ea92f2 0x32e99000 + 66290
3 IMGSGX554GLDriver 0x32ea7f44 0x32e99000 + 61252
Я закрыл целую кучу приложений (в основном, детских игр), работающих в фоновом режиме на устройстве, и перезапустил его, а затем он работал нормально. Может быть, кто-то поможет точно определить проблему и могут ли какие-либо изменения в наших приложениях предотвратить сбой.