Skip to content

fix: Improve bidirectional memory allocation model #1569

fix: Improve bidirectional memory allocation model

fix: Improve bidirectional memory allocation model #1569

Workflow file for this run

---
name: CI
on:
pull_request:
branches: [main, utbot-main]
push:
branches: [main, utbot-main]
workflow_dispatch:
inputs:
warnings_as_errors:
description: 'Warnings as errors'
required: true
default: 1
# Defaults for building KLEE
env:
BASE_IMAGE: ubuntu:jammy-20230126
REPOSITORY: ghcr.io/unittestbot/klee
BUILD_SUFFIX: "default"
COVERAGE: 0
DISABLE_ASSERTIONS: 0
ENABLE_DOXYGEN: 0
ENABLE_OPTIMIZED: 1
ENABLE_DEBUG: 1
ENABLE_WARNINGS_AS_ERRORS: ${{ github.event_name == 'workflow_dispatch' && inputs.warnings_as_errors || 1}}
ENABLE_FP_RUNTIME: 1
GTEST_VERSION: 1.16.0
KLEE_RUNTIME_BUILD: "Debug+Asserts"
LLVM_VERSION: 11
MINISAT_VERSION: "master"
REQUIRES_RTTI: 0
SOLVERS: BITWUZLA:Z3:STP
STP_VERSION: 2.3.3
TCMALLOC_VERSION: 2.9.1
UCLIBC_VERSION: klee_uclibc_v1.4
USE_TCMALLOC: 1
USE_LIBCXX: 1
Z3_VERSION: 4.8.15
SQLITE_VERSION: 3400100
BITWUZLA_VERSION: 0.7.0
JSON_VERSION: v3.11.3
IMMER_VERSION: v0.8.1
jobs:
# Linux:
# runs-on: ubuntu-22.04
# strategy:
# matrix:
# name: [
# "LLVM 16",
# "LLVM 15",
# "LLVM 14",
# "LLVM 13",
# "LLVM 12",
# "LLVM 11, Doxygen",
# "ASan",
# "UBSan",
# "MSan",
# "Z3 only",
# "metaSMT",
# "STP master",
# "Bitwuzla only",
# "Latest klee-uclibc",
# "Asserts disabled",
# "No TCMalloc, optimised runtime",
# ]
# include:
# - name: "LLVM 16"
# env:
# LLVM_VERSION: 16
# - name: "LLVM 15"
# env:
# LLVM_VERSION: 15
# - name: "LLVM 14"
# env:
# LLVM_VERSION: 14
# - name: "LLVM 13"
# env:
# LLVM_VERSION: 13
# - name: "LLVM 12"
# env:
# LLVM_VERSION: 12
# - name: "LLVM 11, Doxygen"
# env:
# LLVM_VERSION: 11
# ENABLE_DOXYGEN: 1
# # Sanitizer builds. Do unoptimized build otherwise the optimizer
# # might remove problematic code
# - name: "ASan"
# env:
# SANITIZER_BUILD: address
# ENABLE_OPTIMIZED: 0
# USE_TCMALLOC: 0
# SANITIZER_LLVM_VERSION: 12
# - name: "UBSan"
# env:
# SANITIZER_BUILD: undefined
# ENABLE_OPTIMIZED: 0
# USE_TCMALLOC: 0
# SANITIZER_LLVM_VERSION: 12
# - name: "MSan"
# env:
# SANITIZER_BUILD: memory
# ENABLE_OPTIMIZED: 0
# USE_TCMALLOC: 0
# SOLVERS: STP
# SANITIZER_LLVM_VERSION: 14
# # Test just using Z3 only
# - name: "Z3 only"
# env:
# SOLVERS: Z3
# # Test just using metaSMT
# - name: "metaSMT"
# env:
# METASMT_VERSION: qf_abv
# SOLVERS: metaSMT
# METASMT_DEFAULT: STP
# REQUIRES_RTTI: 1
# # Test we can build against STP master
# - name: "STP master"
# env:
# SOLVERS: STP
# STP_VERSION: master
# # Test just using Bitwuzla only
# - name: "Bitwuzla only"
# env:
# SOLVERS: BITWUZLA
# # Check we can build latest klee-uclibc branch
# - name: "Latest klee-uclibc"
# env:
# UCLIBC_VERSION: klee_0_9_29
# # Check at least one build with Asserts disabled.
# - name: "Asserts disabled"
# env:
# DISABLE_ASSERTIONS: 1
# # Check without TCMALLOC and with an optimised runtime library
# - name: "No TCMalloc, optimised runtime"
# env:
# SOLVERS: STP
# USE_TCMALLOC: 0
# KLEE_RUNTIME_BUILD: "Release+Debug+Asserts"
# steps:
# - name: Checkout KLEE source code
# uses: actions/checkout@v3
# with:
# submodules: recursive
# - name: Memory layout fix for old clang
# run: |
# # TODO remove this once upstream fix is available
# sudo sysctl -w vm.mmap_rnd_bits=28
# - name: Build KLEE
# env: ${{ matrix.env }}
# run: scripts/build/build.sh klee --docker --create-final-image
# - name: Run tests
# env: ${{ matrix.env }}
# run: scripts/build/run-tests.sh --run-docker --debug
macOS:
runs-on: macos-latest
env:
LLVM_VERSION: 14
BASE: /tmp
SOLVERS: Z3
Z3_VERSION: 4.14.1
ENABLE_FP_RUNTIME: 0
UCLIBC_VERSION: 0
USE_TCMALLOC: 0
USE_LIBCXX: 0
steps:
- name: Install newer version of Bash
run: brew install bash
- name: Checkout KLEE source code
uses: actions/checkout@v4
- name: Create virtualenv for Python3 (PEP 668)
run: python3 -m venv .venv
- name: Build KLEE
run: source .venv/bin/activate && echo "$(which tabulate)" && scripts/build/build.sh klee --debug --install-system-deps
- name: Run tests
run: source .venv/bin/activate && scripts/build/run-tests.sh /tmp/klee_build* --debug
Docker:
runs-on: ubuntu-latest
steps:
- name: Checkout KLEE Code
uses: actions/checkout@v3
with:
submodules: recursive
- name: Build Docker image
run: docker build .
# Coverage:
# runs-on: ubuntu-latest
# strategy:
# matrix:
# name: [
# "STP",
# "Z3",
# "Bitwuzla",
# ]
# include:
# - name: "STP"
# env:
# SOLVERS: STP
# - name: "Z3"
# env:
# SOLVERS: Z3:STP
# - name: "Bitwuzla"
# env:
# SOLVERS: BITWUZLA:Z3
# env:
# ENABLE_OPTIMIZED: 0
# COVERAGE: 1
# steps:
# - name: Checkout KLEE source code
# uses: actions/checkout@v3
# with:
# # Codecov may run into "Issue detecting commit SHA. Please run
# # actions/checkout with fetch-depth > 1 or set to 0" when uploading.
# # See also https://github.com/codecov/codecov-action/issues/190
# fetch-depth: 2
# submodules: recursive
# - name: Build KLEE
# env: ${{ matrix.env }}
# run: scripts/build/build.sh klee --docker --create-final-image
# - name: Run tests
# env: ${{ matrix.env }}
# run: scripts/build/run-tests.sh --coverage --upload-coverage --run-docker --debug
clang-format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: 3.x
- uses: pre-commit/[email protected]