正在报告 ALAssetRepresentation 元数据方法的崩溃

Posted

技术标签:

【中文标题】正在报告 ALAssetRepresentation 元数据方法的崩溃【英文标题】:Crash being reported for ALAssetRepresentation metadata method 【发布时间】:2013-12-20 04:01:47 【问题描述】:

我有一些代码包装了一个 ALAsset 对象,该对象是通过枚举 ALAssetLibrary 中的资产来检索的。我收到了用户遇到崩溃的报告,其中包装对象的一部分向它包含的 ALAsset 询问元数据。

崩溃的代码在这个包装类中,它只是像这样询问其 ALAsset 的元数据:

[[myAlAsset defaultRepresentation] metadata]; 

这是代表我看到的崩溃的部分堆栈跟踪:

0
CoreFoundation   CFDataGetBytePtr + 5
1
PhotoLibraryServices     __46-[PLManagedAsset adjustmentsXMPRepresentation]_block_invoke + 228
2
PhotoLibraryServices     __46-[PLManagedAsset adjustmentsXMPRepresentation]_block_invoke + 228
3
CoreData     developerSubmittedBlockToNSManagedObjectContextPerform + 88
4
CoreData     -[NSManagedObjectContext performBlockAndWait:] + 114
5
PhotoLibraryServices     -[PLManagedAsset adjustmentsXMPRepresentation] + 226
6
AssetsLibrary    __33-[ALAssetRepresentation metadata]_block_invoke + 24
7
AssetsLibrary    __53-[ALAssetRepresentationPrivate _performBlockAndWait:]_block_invoke + 68
8
CoreData     developerSubmittedBlockToNSManagedObjectContextPerform + 88
9
libdispatch.dylib    _dispatch_client_callout + 22
10
libdispatch.dylib    _dispatch_barrier_sync_f_invoke + 26
11
CoreData     -[NSManagedObjectContext performBlockAndWait:] + 106
12
AssetsLibrary    -[ALAssetsLibrary _performBlockAndWait:] + 134
13
AssetsLibrary    -[ALAssetRepresentationPrivate _performBlockAndWait:] + 176
14
AssetsLibrary    -[ALAssetRepresentation metadata] + 464

有人对可能发生的事情有想法吗?作为这些资产基础的 AlAssetLibrary 与静态引用一起保存,因此不应在内存中清理它,因此我不希望 ALAsset 已失效。这个问题似乎是从发布 ios 7 开始的。

崩溃本身是 EXC_BAD_ACCESS,KERN_INVALID_ADDRESS 位于 0x0。

【问题讨论】:

我们最近也看到了这种情况。查看堆栈顶部的CFDataGetBytePtr,我觉得这可能与内存有关。您找到原因/解决方案了吗? 我在 iPhone 4S 上也看到了这种崩溃,尽管我无法重现它。 Crashlytics 正在报告说,崩溃的设备在崩溃时大约有 45MB 的可用 RAM。我敢肯定,这不一定准确,但只是另一个数据点。 作为附加信息,我们的日志表明这也发生在其他设备型号(不仅仅是 iPhone 4S)中。但绝对只有 iOS 7.0 及更高版本。 这种情况只发生在使用相机拍摄的图像上吗? 哇!它继续读取 XML 字符串的 XMP 数据。这是一个隐藏的元数据属性,发生在修饰图像中。为什么不试试 ImageIO 框架来读取元数据并查看是否发生崩溃。 【参考方案1】:

这可能是由于缓冲区溢出造成的。请检查苹果网站的链接,该链接显示与您相同的缓冲区溢出崩溃报告。希望这对您有所帮助。

https://developer.apple.com/library/ios/documentation/Security/Conceptual/SecureCodingGuide/Articles/BufferOverflows.html#//apple_ref/doc/uid/TP40002577-SW1

【讨论】:

以上是关于正在报告 ALAssetRepresentation 元数据方法的崩溃的主要内容,如果未能解决你的问题,请参考以下文章

正在报告 ALAssetRepresentation 元数据方法的崩溃

代码运行,但报告我正在发布版本中调试

水晶报告11:空白领域炸弹报告

如何访问 12c 报告元数据?

报告查看器控件(Web)显示空白报告

导出到 Pentaho 报告结果到 csv 或 excel