Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Таймаут генерации обёрток #94

Open
mimicria opened this issue Jan 25, 2024 · 2 comments
Open

Таймаут генерации обёрток #94

mimicria opened this issue Jan 25, 2024 · 2 comments

Comments

@mimicria
Copy link

В состоянии try to generate на некоторых целях может висеть непозволительно долго, особенно для больших проектов.

-- [Futag] Try to generate fuzz-driver for class method:  set_allocated_go_package ...

Хотелось бы возможность в gen_targets добавить таймаут для ускорения процесса.

@thientc
Copy link
Collaborator

thientc commented Feb 19, 2024

Пока не знаю "чему" можно управлять процессом создания фаззинг-оберток: проверяет если время создания превышает лимит. У вас идея есть?

@mimicria
Copy link
Author

Пока не знаю "чему" можно управлять процессом создания фаззинг-оберток: проверяет если время создания превышает лимит. У вас идея есть?

Просто для примера сейчас пробую futag на библиотеке grpc.
В результате анализа найдено достаточно много всего:

Total functions:  29962
Total functions for consumer programs:  29962
Total enums:  848
Total records:  4369
Total typedefs:  2549

Возможно, стоит отфильтровать результаты по цикломатической сложности, по входным данным.
Иначе, на первой же попытке сгенерировать обертку попадается operator!=, на котором генерация подвисает минут на 20.

Analysis result:  /home/user/Projects/grpc-gh/grpc_futag/.futag-analysis/futag-analysis-result.json
-- [Futag] Try to generate fuzz-driver for function:  operator!= ...

Итог: генерация длится 2 недели и завершения не видно. Отсюда ещё 2 мысли: показывать счётчик 1/29к сколько уже обработано из скольки. Ну и прерывать попытку генерации, если превышен определенный заданный пользователем порог времени.

Прикладываю конфиг, возможно там что-то подкрутить можно?

from futag.preprocessor import *
from futag.generator import *
from futag.sysmsg import *

FUTAG_PATH = "/home/user/Futag/futag-llvm/"
lib_path = "/home/user/Projects/grpc-gh/grpc_futag"
lib_test = Builder(
    FUTAG_PATH,
    lib_path,
    clean=True,
    processes=16,
)
lib_test.auto_build()
lib_test.analyze()

lib_gen = Generator(
    FUTAG_PATH,
    lib_path,
)
lib_gen.gen_targets(
    anonymous=False,
    max_wrappers=1,
)
lib_gen.compile_targets(16, keep_failed=True,
)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants