почему ulimit -v не работает под дезинфицирующим средством clang’s address?

я использую libFuzzer Fuzz API.
API десериализует массив битов (предоставленный libFuzzer)
и преобразование их в экземпляры класса C ++.

Благодаря формату сериализации, libFuzer может создавать сериализованный объект, который сообщает десериализатору резервировать большие объемы данных (которые не могут быть выполнены).
Это делается с помощью звонков std::vector::resize(), Вектор бросает std::bad_allocи, хотя проблема обнаружена и безопасно устранена, она вызывает крайнюю задержку в фаззере (как упоминалось в следующая документация по вопросам ООМ).

В попытке уменьшить количество памяти, используемой во время работы фаззера, я надеялся установить ulimit -v и настроить доступную виртуальную память процесса. Однако это вызывает

==27609==ERROR: AddressSanitizer failed to allocate 0xdfff0001000 (15392894357504) bytes at address 2008fff7000 (errno: 12)
==27609==ReserveShadowMemoryRange failed while trying to map 0xdfff0001000 bytes. Perhaps you're using ulimit -v

Почему очиститель адресов не работает под ulmit -v?
Хотелось бы, чтобы я мог, тогда я мог бы пушить более эффективно.

Дополнительная информация:
Мои флаги сборки были:

copts = [
"-fsanitize=address,fuzzer",
"-fsanitize-trap=undefined,integer",
"-fsanitize-coverage=trace-pc,trace-cmp,trace-pc-guard",
"-g",
"-O0",
"-fno-omit-frame-pointer",
"-fno-sanitize=vptr",
],
linkopts = [
"-fsanitize=address,fuzzer",
"-fsanitize-trap=undefined,integer",
"-fno-sanitize=vptr",
"-fsanitize-link-c++-runtime",
],

Я пытался отключить флаги, чтобы я мог установить ulimit и запустите фаззер:

copts = [
"-fsanitize=fuzzer",
"-g",
"-O0",
"-fno-omit-frame-pointer",
],
linkopts = [
"-fsanitize=fuzzer",
],

но это вызывает немедленную ошибку.

3

Решение

Асан резервирует 1/8 адресного пространства процесса для теневой памяти при запуске для хранения статуса пользовательских данных (выделенных, освобожденных и т. Д.). Это сделано специально, и с этим ничего не поделаешь.

Обратите внимание, что вы, как правило, не заботитесь о виртуальной памяти, а скорее о физической (которая также вызывает new потерпеть неудачу в вашем случае).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]