ASan的unmap_shadow_on_exit实际做什么?

时间:2019-01-30 22:46:37

标签: c++ c memory-leaks address-sanitizer

我正在调试进程中的内存泄漏,为此使用了AddressSanitizer。我在构建中设置标志以获取泄漏报告并使用ASAN_OPTIONS=detect_leaks=1:unmap_shadow_on_exit=1 ./dostuff运行。这给了我这样美味的报告:

Direct leak of 1728 byte(s) in 24 object(s) allocated from:
    #0 0x109e8b48c in wrap_malloc (libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x5d48c)
    #1 0x121d2b89d in moz_xmalloc mozalloc.cpp:83
    ...

我注意到禁用unmap_shadow_on_exit与启用unmap_shadow_on_exit=1之间有很大的区别,但是我不完全了解它的作用,有关此文档的文档有些短(请参阅ASan options)。启用它会产生较大的字节数,而禁用它会产生很小的数字。我假设test-lib/gulpfile.js意味着泄漏的对象包括它们的引用对象被汇总,而没有启用它只能汇总实际分配的大小。那是真的吗?在这种情况下,未映射阴影是什么意思?

0 个答案:

没有答案