IOSurfaceClientGetPixelFormat 处的 SIGSEGV(SEGV_ACCERR)

Posted

技术标签:

【中文标题】IOSurfaceClientGetPixelFormat 处的 SIGSEGV(SEGV_ACCERR)【英文标题】:SIGSEGV(SEGV_ACCERR) at IOSurfaceClientGetPixelFormat 【发布时间】:2020-04-09 04:30:28 【问题描述】:

通过UIActivityViewController 共享文本文件时,我偶尔会遇到SIGSEGV(SEGV_ACCERR) at iosurfaceClientGetPixelFormat 崩溃(文本文件可能有几MB)。完整的堆栈跟踪是:

0   IOSurfaceClientGetPixelFormat + 0
1   CA::CG::IOSurfaceContext::create_delegate(CGIOSurfaceContextInfo const*, __CFDictionary const*) + 536
2   CGIOSurfaceContextCreate + 208
3   BSUISurfaceWithColorSpaceAndDrawBlock + 500
4   SBFCreateIOSurfaceForImage + 1060
5   -[CKRemoteItemForSending _setPreviewUIImage:] + 76
6   __46-[CKRemoteItemForSending beginPreviewCreation]_block_invoke + 204
7   __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 12
8   -[NSBlockOperation main] + 80
9   __NSOPERATION_IS_INVOKING_MAIN__ + 16
10  -[NSOperation start] + 736
11  __NSOPERATIONQUEUE_IS_STARTING_AN_OPERATION__ + 16
12  __NSOQSchedule_f + 176
13  _dispatch_block_async_invoke2 + 100
14  _dispatch_client_callout + 12
15  _dispatch_continuation_pop$VARIANT$mp + 408
16  _dispatch_async_redirect_invoke + 652
17  _dispatch_root_queue_drain + 372
18  _dispatch_worker_thread2 + 120
19  _pthread_wqthread + 208
20  start_wqthread + 4

UIActivityViewController 初始化传递了一个 NSURL 并且非常初级:

[[UIActivityViewController alloc] initWithActivityItems:@[[NSURL fileURLWithPath:path]] applicationActivities:nil];

崩溃偶尔会出现,尤其是在尝试通过 iPhone 上的消息应用共享文件时。知道这可能来自哪里吗?

【问题讨论】:

嗨@spassas,我看到崩溃的堆栈跟踪与您的相同。你找到解决办法了吗? 【参考方案1】:

我认为你应该打印 URL 并检查它。

【讨论】:

感谢您的回答。 URL 正确 - 文件正确显示在 iOS 共享表上,此问题偶尔会发生,并且对于某些可用的共享选项

以上是关于IOSurfaceClientGetPixelFormat 处的 SIGSEGV(SEGV_ACCERR)的主要内容,如果未能解决你的问题,请参考以下文章