AddressSanitizer: stack-overflow on address

Модератор: Модераторы разделов

IMB
Сообщения: 2545
ОС: Debian

AddressSanitizer: stack-overflow on address

Сообщение IMB »

Собрал приложение с -ggdb -fsanitize=address -fno-omit-frame-pointer под arm, gcc-11.2.0, но при запуске всё валится

Код: Выделить всё

~ # LD_PRELOAD=/tmp/libasan.so.6 LD_LIBRARY_PATH=/tmp /tmp/player args
AddressSanitizer:DEADLYSIGNAL
=================================================================
==3198==ERROR: AddressSanitizer: stack-overflow on address 0x7e47cf68 (pc 0x76aa9e48 bp 0x7e47d394 sp 0x7e47cf60 T0)
    #0 0x76aa9e48 in __sanitizer::StackTrace::StackTrace(unsigned long const*, unsigned int) /tmp/firmware/build-arm-hi3798mv100/arm-rtk-linux-gnueabi/.build/arm-rtk-linux-gn2
    #1 0x76aa9e48 in __sanitizer::BufferedStackTrace::BufferedStackTrace() /tmp/firmware/build-arm-hi3798mv100/arm-rtk-linux-gnueabi/.build/arm-rtk-linux-gnueabi/src/gcc/libs5
    #2 0x76aa9e48 in __interceptor_malloc /tmp/firmware/build-arm-hi3798mv100/arm-rtk-linux-gnueabi/.build/arm-rtk-linux-gnueabi/src/gcc/libsanitizer/asan/asan_malloc_linux.c5

SUMMARY: AddressSanitizer: stack-overflow /tmp/firmware/build-arm-hi3798mv100/arm-rtk-linux-gnueabi/.build/arm-rtk-linux-gnueabi/src/gcc/libsanitizer/sanitizer_common/sanitiz)
==3198==ABORTING
Как бы его убедить поработать побольше и проверить приложение?
Спасибо.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19421
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: AddressSanitizer: stack-overflow on address

Сообщение Bizdelnick »

-fsanitize-recover=all
И запускать с ASAN_OPTIONS=halt_on_error=0 в окружении.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
IMB
Сообщения: 2545
ОС: Debian

Re: AddressSanitizer: stack-overflow on address

Сообщение IMB »

Увы, не помогло. Мне надо проверить библиотеку, так что я её пересобираю с ключами и указываю через LD_LIBRARY_PATH
Спасибо сказали:
IMB
Сообщения: 2545
ОС: Debian

Re: AddressSanitizer: stack-overflow on address

Сообщение IMB »

https://gavinchou.github.io/experience/summary/syntax/gcc-address-sanitizer/
On average, the instrumentation increases processing time by about 73% and memory usage by 340%
Действительно так?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19421
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: AddressSanitizer: stack-overflow on address

Сообщение Bizdelnick »

Попробуйте увеличить или вообще убрать лимит на размер стека: ulimit -s unlimited
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
IMB
Сообщения: 2545
ОС: Debian

Re: AddressSanitizer: stack-overflow on address

Сообщение IMB »

Код: Выделить всё

~ # ulimit -a
-f: file size (blocks)             unlimited
-t: cpu time (seconds)             unlimited
-d: data seg size (kb)             unlimited
-s: stack size (kb)                unlimited
-c: core file size (blocks)        unlimited
-m: resident set size (kb)         unlimited
-l: locked memory (kb)             64
-p: processes                      1431
-n: file descriptors               1024
-v: address space (kb)             unlimited
-w: locks                          unlimited
-e: scheduling priority            0
-r: real-time priority             0
результат запуска

Код: Выделить всё

==2232==Shadow memory range interleaves with an existing memory mapping. ASan cannot proceed correctly. ABORTING.
==2232==ASan shadow was supposed to be located in the [0x1ffff000-0x37ffffff] range.
https://bbs.archlinux.org/viewtopic.php?id=228947
This is fixed in linux 4.12.8-2
не мой случай

Код: Выделить всё

~ # uname -r
3.18.13_s40
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19421
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: AddressSanitizer: stack-overflow on address

Сообщение Bizdelnick »

Тут пишут, что при unlimited такое случается. Видимо, есть смысл поставить какое-то разумное ограничение.
И я бы всё же поинтересовался, зачем программа так активно использует стек. Даже если без asan проблемы не наблюдается, она всё равно может проявиться при каком-то стечении обстоятельств.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
IMB
Сообщения: 2545
ОС: Debian

Re: AddressSanitizer: stack-overflow on address

Сообщение IMB »

да сама не насколько активно использует, но участились случаи oom-killer и пытаюсь понять - это новая утечка, по коду вроде ничего не меняли, или некая новая ошибка приводящая к большому выделению
Добавлено (13:50):
поэкспериментировал с значениями и дошёл до oom-killer при вызове, собственно на устройсве не так много памяти

Код: Выделить всё

~ # free -m
             total       used       free     shared    buffers     cached
Mem:           481        279        202         26          0        120
-/+ buffers/cache:        159        322
Swap:            0          0          0
и если sanitizer много потребляет, то может и не хватает
Спасибо сказали: