iOS13上的Mapkit MapView矢量工具包崩溃
随着iOS13的发布,我们正在开发的应用程序上出现越来越多的mapKit VectorKit崩溃。我们无法在内部再现事故,我们自己的事故报告员每天收集200多起事故 从我们得到的所有信息来看,当应用程序从后台激活时,崩溃总是发生,此时,ViewController视图有一个iOS13上的Mapkit MapView矢量工具包崩溃,ios,mapkit,mkmapview,ios13,Ios,Mapkit,Mkmapview,Ios13,随着iOS13的发布,我们正在开发的应用程序上出现越来越多的mapKit VectorKit崩溃。我们无法在内部再现事故,我们自己的事故报告员每天收集200多起事故 从我们得到的所有信息来看,当应用程序从后台激活时,崩溃总是发生,此时,ViewController视图有一个MKMapView子视图。系统渲染地图UI时可能出现问题 自iOS11或更早版本以来,这个问题似乎是一个长期存在的iOS问题。现在,与碰撞相关的iOS13系统版本包括13.0,13.1,13.1.1,13.1.2。我已经在苹果
MKMapView
子视图。系统渲染地图UI时可能出现问题
自iOS11或更早版本以来,这个问题似乎是一个长期存在的iOS问题。现在,与碰撞相关的iOS13系统版本包括13.0
,13.1
,13.1.1
,13.1.2
。我已经在苹果bug报告系统上报告了这个问题,但是苹果到目前为止没有任何回应
任何建议或暗示都将不胜感激
仅供参考。崩溃堆栈如下所示
Exception Type: SIGABRT
Exception Codes: #0 at 0x1a8530ebc
Crashed Thread: 0
Thread 0 Crashed:
0 libsystem_kernel.dylib __pthread_kill + 8
1 libsystem_c.dylib abort + 100
2 libsystem_c.dylib __assert_rtn + 204
3 Metal MTLIOAccelCommandBufferStorageGrowSegmentList.cold.1 + 0
4 Metal MTLReportFailure + 476
5 Metal -[MTLTextureDescriptorInternal validateWithDevice:] + 2124
6 AGXMetalA11 0x00000001a85f93e8 + 64
7 VectorKit ggl::MetalResourceManager::newTexture(ggl::Texture const*) + 596
8 VectorKit ggl::MetalRenderer::prepareTexture(ggl::MetalResourceManager*, ggl::Texture const*) + 44
9 VectorKit ggl::MetalRenderer::_processQueue(ggl::RenderTarget*, ggl::RenderQueue*, id<MTLCommandBuffer>) + 3220
10 VectorKit ggl::MetalRenderer::_processQueue(ggl::RenderTarget*, ggl::RenderQueue*, id<MTLCommandBuffer>) + 96
11 VectorKit invocation function for block in ggl::MetalRenderer::frame(ggl::RenderTarget*, ggl::RenderQueue*, std::__1::function<void ()>, std::__1::function<void ()>) + 56
12 VectorKit invocation function for block in geo::TaskQueue::sync(std::__1::function<void ()>) + 60
13 libdispatch.dylib _dispatch_client_callout + 16
14 libdispatch.dylib _dispatch_async_and_wait_invoke_and_complete_recurse + 228
15 libdispatch.dylib _dispatch_async_and_wait_f + 100
16 VectorKit ggl::MetalRenderer::frame(ggl::RenderTarget*, ggl::RenderQueue*, std::__1::function<void ()>, std::__1::function<void ()>) + 544
17 VectorKit ggl::RenderFrame::execute(ggl::RenderTarget*, ggl::RenderQueue*, std::__1::function<void ()>, std::__1::function<void ()>) + 120
18 VectorKit -[MDDisplayLayer drawToTexture:withRenderQueue:completionHandler:] + 348
19 VectorKit -[MetalLayer _onTimerFired:withPresent:] + 280
20 VectorKit md::MapEngine::renderScene(double, std::__1::function<void ()>) + 104
21 VectorKit md::MapEngine::onRenderTimerFired(double) + 328
22 VectorKit ggl::DisplayLink::onTimerFired(double) + 40
23 VectorKit -[_GGLDisplayLinkTarget displayLinkFired:] + 84
24 QuartzCore CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 632
25 QuartzCore display_timer_callback(__CFMachPort*, void*, long, void*) + 264
26 CoreFoundation __CFMachPortPerform + 172
27 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 56
28 CoreFoundation __CFRunLoopDoSource1 + 444
29 CoreFoundation __CFRunLoopRun + 2168
30 CoreFoundation CFRunLoopRunSpecific + 464
31 GraphicsServices GSEventRunModal + 104
32 UIKitCore UIApplicationMain + 1936
33 homebrew main (main.m:16)
34 libdyld.dylib start + 4
异常类型:SIGABRT
异常代码:0x1a8530ebc处为0
崩溃线程:0
线程0崩溃:
0 libsystem\u kernel.dylib\u pthread\u kill+8
1 libsystem_c.dylib中止+100
2 libsystem\u c.dylib\u断言\u rtn+204
3金属MTLioAccelCommandBuffer存储细分列表。冷态。1+0
4金属MTLReportFailure+476
5金属-[MTLTextureDescriptorInternal validateWithDevice:+2124
6 AGXMetalA11 0x00000001a85f93e8+64
7矢量工具包ggl::MetalResourceManager::新纹理(ggl::纹理常量*)+596
8矢量工具包ggl::MetalRenderer::prepareTexture(ggl::MetalResourceManager*,ggl::Texture const*)+44
9矢量工具包ggl::MetalRenderer::_processQueue(ggl::RenderTarget*,ggl::RenderQueue*,id)+3220
10矢量工具包ggl::MetalRenderer::_processQueue(ggl::RenderTarget*,ggl::RenderQueue*,id)+96
11用于ggl::MetalRenderer::frame中块的矢量工具包调用函数(ggl::RenderTarget*,ggl::RenderQueue*,std::_1::function,std:_1::function)+56
12 geo::TaskQueue::sync中块的矢量工具包调用函数(std:_1::函数)+60
13 libdispatch.dylib_dispatch_client_callout+16
14 libdispatch.dylib_dispatch_async_和_wait_invoke_和_complete_recurse+228
15 libdispatch.dylib_dispatch_async_和_wait_f+100
16矢量工具包ggl::MetalRenderer::frame(ggl::RenderTarget*,ggl::RenderQueue*,标准::函数,标准::函数)+544
17矢量工具包ggl::RenderFrame::execute(ggl::RenderTarget*,ggl::RenderQueue*,标准::函数,标准::函数)+120
18 VectorKit-[MDDisplayLayer drawToTexture:withRenderQueue:completionHandler:][348
19矢量套件-[MetalLayer\u onTimerFired:withPresent:][280
20 VectorKit md::MapEngine::renderScene(双精度,标准::函数)+104
21 VectorKit md::MapEngine::onRenderTimerFired(双)+328
22矢量套件ggl::DisplayLink::onTimerFired(双)+40
23矢量套件-[\u ggleDisplayLinkTarget displayLinkFired:][84
24 QuartzCore CA::Display::DisplayLink::分派_项(无符号长、无符号长、无符号长)+632
25夸脱核心显示\u定时器\u回调(\uuu CFMachPort*,void*,long,void*)+264
26 Corefou基金会机械加工执行+172
27 CoreFoundation\uuuCFrunloop\u正在调用\u OUT\u到\u A\u SOURCE1\u执行\u功能\uuuu+56
28 CoreFoundation\uu CFRunLoopDoSource1+444
29 CoreFoundation uu CFRunLoopRun+2168
30核心基础CFRUNLOOPSCRUN+464
31图形服务GSEventRunModal+104
32 UIKitCore UIApplicationMain+1936
33自制main(main.m:16)
34 libdyld.dylib开始+4
检查iOS12和iOS13上的CPU利用率
我注意到我的应用程序崩溃了,因为我太频繁地在地图上添加和删除多段线(尽管这个问题只出现在iOS13中,而不是iOS12中)
请参阅我的SO帖子
查看您的崩溃日志,看看您是否发现了以下情况:
Event: cpu usage
Action taken: Process killed
CPU: 48 seconds cpu time over 54 seconds (88% cpu average), exceeding limit of 80% cpu over 60 seconds
CPU limit: 48s
Limit duration: 60s
CPU used: 48s
Duration: 54.45s
Steps: 15
如果我降低重新绘制地图覆盖图的频率,我的应用程序在iOS13中停止崩溃