-
Notifications
You must be signed in to change notification settings - Fork 11
Description
При запуске скрипта для анализа исходного кода QEMU версии 8.3.2 возникает ошибка.
Как я понял, скрипт сначала конфигурирует сборку, затем выполняет анализ, создает файлы в директории с результатами анализа и удаляет собранные файлы. После этого скрипт пытается снова конфигурировать сборку, но не может выполнить её повторно из-за ошибок.
При попытке запустить эти две команды которые запускает футаг и говорит забилдить в ручную
Configure command: /home/user/Futag/futag-llvm/bin/scan-build -disable-checker core -disable-checker security -disable-checker unix -disable-checker deadcode -disable-checker nullability -di-checker cplusplus /home/user/virt/qemu-8.2.3/configure --prefix=/home/user/virt/qemu-8.2.3/.futag-install -enable-fuzzing --enable-sanitizers
Analyzing command: /home/user/Futag/futag-llvm/bin/scan-build -disable-checker core -disable-checker security -disable-checker unix -disable-checker deadcode -disable-checker nullability -di-checker cplusplus -enable-checker futag.FutagAnalyzer -analyzer-config futag.FutagAnalyzer:report_dir=/home/user/virt/qemu-8.2.3/.futag-analysis make -j28
мне удается сохранить собранные файлы и выполнить анализ. Далее я успешно запускаю функцию анализа (analyze), которая создает JSON-файл с результатами.
После этого происходит генерация оберток (wrappers), их очень много. Однако после генерации происходит автоматическая компиляция, во время которой Futag удаляет сгенерированные файлы и сообщает, что ничего не было скомпилировано. Поэтому я запускал каждый этап вручную, но скомпилировать обертки для QEMU так и не удалось.
Также я пытался сгенерировать обертки для libvirt-10.3.0. Эта библиотека собирается через Meson вручную, и процесс происходит быстрее, так как libvirt меньше по размеру, чем QEMU. Однако при компиляции сгенерированных оберток возникает та же ошибка.
QEMU — большая библиотека, и генерация оберток занимает очень много времени. Например, для генерации оберток для отдельной структуры процессора QEMU уходит около 3 часов. Если собирать весь QEMU, процесс может занимать больше 24 часов (например, за это время было сгенерировано только 12 из 90 000 оберток). Это очень долго.
Libvirt генерирует обертки за 5 минут, но последующие запуски занимают часы, и результат остается таким же. Если запускать скрипт по частям (генерацию и компиляцию отдельно), вывод команды компиляции отсутствует.
Итог:
Обертки для QEMU не удалось скомпилировать, так как генерация занимает слишком много времени.
При компиляции оберток для libvirt возникает ошибка, которая останавливает процесс.