Re: запуск тестов https://github.com/nginx/nginx-tests с включенным ASAN (address sanitizer)

Maxim Dounin mdounin на mdounin.ru
Вт Апр 20 13:32:06 UTC 2021


Hello!

On Tue, Apr 20, 2021 at 04:43:58PM +0500, Илья Шипицин wrote:

> привет!
> 
> занимаюсь тестированием 3rd parties модулей.
> один из вариантов тестирования - штатные тесты
> https://github.com/nginx/nginx-tests
> 
> хотелось бы в том числе запускать их с ASAN.
> 
> но на nginx без модулей сейчас получается вот так (половина тестов
> разваливается)
> 
> ==3669==ERROR: LeakSanitizer: detected memory leaks
> 
> Indirect leak of 221184 byte(s) in 3 object(s) allocated from:
>     #0 0x5049a6 in __interceptor_malloc
> (/home/ilia/nginx-1.19.10/objs/nginx+0x5049a6)
>     #1 0x5a11ff in ngx_alloc
> /home/ilia/nginx-1.19.10/src/os/unix/ngx_alloc.c:22:9
>     #2 0x5b0104 in ngx_worker_process_init
> /home/ilia/nginx-1.19.10/src/os/unix/ngx_process_cycle.c:900:17
>     #3 0x5af2c3 in ngx_worker_process_cycle
> /home/ilia/nginx-1.19.10/src/os/unix/ngx_process_cycle.c:704:5
>     #4 0x5ad797 in ngx_start_worker_processes
> /home/ilia/nginx-1.19.10/src/os/unix/ngx_process_cycle.c:344:9
>     #5 0x53866d in main /home/ilia/nginx-1.19.10/src/core/nginx.c:383:9
>     #6 0x7f1ec30db554 in __libc_start_main (/lib64/libc.so.6+0x22554)
> 
> SUMMARY: AddressSanitizer: 221184 byte(s) leaked in 3 allocation(s).
> 
> 
> скажите, у вас есть практика запуска с asan ?

Практика есть, но конкретно leak sanitizer бесполезен примерно 
полностью: реальных утечек в nginx'е он не ловит, так как 
используются pool allocator'ы, но при этом ругается на любыые 
аллокации, не освобождённые явно перед выходом.  Что делать всегда 
не обязательно (при выходе процесса вся выделенная память 
освобождается автоматически), а в некоторых случаях и вообще 
невозможно (скажем, память, выделенную под какой-нибудь environ, 
освобождать нельзя, она используется при выходе).  Хорошее решение - 
выключить leak sanitizer и забыть.

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru