0

私は最近、XCode 7 で導入されたと思われる XCode AddressSanitizer の使用を開始しました (たとえば、 Apple WWDC プレゼンテーションを参照)。サニタイザーは実際に問題を発見しましたが、それが何を意味するのか理解するのに苦労しています.

AddressSanitizer が報告できるエラーの種類の概要とその説明を知っていますか?

私の特定のケースでは、エラーは iOS ライブラリの奥深くで報告され、最終的には私のコードに起因します。

[CATransaction commit];

報告されたエラーは次のとおりです。

==820==ERROR: AddressSanitizer failed to allocate 0x4b8000 (4947968) bytes of LargeMmapAllocator (error code: 12)
==820==Process memory map follows:
    0x0193820000-0x019383d000   /System/Library/CoreServices/Encodings/libJapaneseConverter.dylib
    0x019fb17000-0x019fb17020   /System/Library/CoreServices/Encodings/libJapaneseConverter.dylib

    ... very long list of mapped memory ...

==820==End of process memory map.
==820==AddressSanitizer CHECK failed: /Library/Caches/com.apple.xbs/Sources/clang/clang-703.0.29/src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common.cc:181 "((0 && "unable to mmap")) != (0)" (0x0, 0x0)
ERROR: Failed to mmap
AddressSanitizer report breakpoint hit. Use 'thread info -s' to get extended information about the report.
(lldb) thread info -s
thread #1: tid = 0x993ca, 0x0000000100994010 libclang_rt.asan_ios_dynamic.dylib`__asan::AsanDie(), queue = 'com.apple.main-thread'

この特定のエラーの意味を知っている人はいますか?

4

1 に答える 1

2

AddressSanitizer はカスタム メモリ アロケータを使用し、この特定のケースではメモリ不足になります。これは、必ずしも ASan 自体またはプログラムの問題を示しているわけではありません。

于 2016-04-27T12:55:40.207 に答える