Что на самом деле делает unmap_shadow_on_exit от ASan? - PullRequest
0 голосов
/ 31 января 2019

Я отлаживаю утечку памяти в процессе и использую 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, но я не до конца понимаю, что он делает, документация по этому вопросу немного коротка (см. ASan options ).Включение дает большие байтовые числа, а отключение - очень маленькие.Я предполагаю, что unmap_shadow_on_exit=1 означает, что объекты с утечкой суммируются, включая объекты, на которые они ссылаются, при этом, если они не включены, это только суммирует размер фактического выделения.Это близко к истине?Что означает unmap shadow в этом контексте?

...