Address Sanitizer analysis #416
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Address Sanitizer analysis | |
on: | |
workflow_dispatch: | |
inputs: | |
discovery_server_branch: | |
description: 'Branch or tag of Discovery Server repository (https://github.com/eProsima/Discovery-Server)' | |
required: true | |
default: 'master' | |
fastdds_branch: | |
description: 'Branch or tag of Fast DDS repository (https://github.com/eProsima/Fast-DDS)' | |
required: true | |
default: 'master' | |
pull_request: | |
types: | |
- review_requested | |
paths-ignore: | |
- '**.md' | |
- '**.txt' | |
- '!**/CMakeLists.txt' | |
schedule: | |
- cron: '0 1 * * *' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
asan-test: | |
if: ${{ ( | |
!contains(github.event.pull_request.labels.*.name, 'skip-ci') && | |
!contains(github.event.pull_request.labels.*.name, 'no-test') && | |
!contains(github.event.pull_request.labels.*.name, 'conflicts') | |
) }} | |
runs-on: ubuntu-22.04 | |
env: | |
FASTDDS_BRANCH: ${{ github.head_ref || github.event.inputs.fastdds_branch || 'master' }} | |
steps: | |
- name: Add ci-pending label if PR | |
if: ${{ github.event_name == 'pull_request' }} | |
uses: eProsima/eProsima-CI/external/add_labels@v0 | |
with: | |
labels: ci-pending | |
number: ${{ github.event.number }} | |
repo: eProsima/Fast-DDS | |
# https://github.com/actions/runner-images/issues/9491 | |
- name: Fix kernel mmap rnd bits | |
run: sudo sysctl vm.mmap_rnd_bits=28 | |
- name: Install apt packages | |
uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 | |
with: | |
packages: curl grep libasio-dev libtinyxml2-dev python3 python3-pip software-properties-common wget | |
- name: Get minimum supported version of CMake | |
uses: eProsima/eProsima-CI/external/get-cmake@v0 | |
with: | |
cmakeVersion: '3.22.6' | |
- name: Setup CCache | |
uses: eProsima/eProsima-CI/external/setup-ccache-action@v0 | |
- name: Install colcon | |
uses: eProsima/eProsima-CI/ubuntu/install_colcon@v0 | |
- name: Install Python dependencies | |
uses: eProsima/eProsima-CI/ubuntu/install_python_packages@v0 | |
with: | |
packages: vcstool setuptools gcovr tomark xmltodict jsondiff pandas | |
- name: Get fastrtps.repos file | |
uses: eProsima/eProsima-CI/ubuntu/get_file_from_repo@v0 | |
with: | |
source_repository: eProsima/Fast-DDS | |
source_repository_branch: ${{ env.FASTDDS_BRANCH }} | |
file_name: fastrtps.repos | |
file_result: fastrtps.repos | |
- name: Fetch Fast DDS & dependencies | |
uses: eProsima/eProsima-CI/ubuntu/vcs_import@v0 | |
with: | |
vcs_repos_file: fastrtps.repos | |
destination_workspace: src | |
- name: Checkout Fast DDS branch | |
run: | | |
cd ./src/fastrtps | |
git checkout ${{ env.FASTDDS_BRANCH }} | |
- name: Fetch Fast DDS ASan dependencies | |
uses: eProsima/eProsima-CI/multiplatform/vcs_import@v0 | |
with: | |
vcs_repos_file: ${{ github.workspace }}/src/fastrtps/.github/workflows/config/asan.repos | |
destination_workspace: src | |
skip_existing: 'true' | |
- name: Build workspace | |
run: | | |
cat src/fastrtps/.github/workflows/config/asan_colcon.meta | |
colcon build \ | |
--event-handlers=console_direct+ \ | |
--metas src/fastrtps/.github/workflows/config/asan_colcon.meta | |
- name: Run tests Fast DDS | |
run: | | |
source install/setup.bash && \ | |
colcon test \ | |
--packages-select fastrtps \ | |
--event-handlers=console_direct+ \ | |
--return-code-on-test-failure \ | |
--ctest-args \ | |
--label-exclude xfail \ | |
--timeout 300 | |
continue-on-error: true | |
- name: Upload Logs | |
uses: actions/upload-artifact@v1 | |
with: | |
name: asan-logs | |
path: log/ | |
if: always() | |
- name: Report ASAN errors | |
if: always() | |
run: | | |
bash src/fastrtps/.github/workflows/utils/specific_errors_filter.sh "==ERROR:" log/latest_test/fastrtps/stdout_stderr.log _tmp_specific_error_file.log | |
python3 src/fastrtps/.github/workflows/utils/log_parser.py --log-file log/latest_test/fastrtps/stdout_stderr.log --specific-error-file _tmp_specific_error_file.log --output-file $GITHUB_STEP_SUMMARY --sanitizer asan | |
asan-discovery-server-test: | |
if: ${{ ( | |
!contains(github.event.pull_request.labels.*.name, 'skip-ci') && | |
!contains(github.event.pull_request.labels.*.name, 'no-test') && | |
!contains(github.event.pull_request.labels.*.name, 'conflicts') | |
) }} | |
runs-on: ubuntu-22.04 | |
env: | |
FASTDDS_BRANCH: ${{ github.head_ref || github.event.inputs.fastdds_branch || 'master' }} | |
DEFAULT_DISCOVERY_SERVER_BRANCH: ${{ github.event.inputs.discovery_server_branch || 'master' }} | |
steps: | |
- name: Add ci-pending label if PR | |
if: ${{ github.event_name == 'pull_request' }} | |
uses: eProsima/eProsima-CI/external/add_labels@v0 | |
with: | |
labels: ci-pending | |
number: ${{ github.event.number }} | |
repo: eProsima/Fast-DDS | |
# https://github.com/actions/runner-images/issues/9491 | |
- name: Fix kernel mmap rnd bits | |
run: sudo sysctl vm.mmap_rnd_bits=28 | |
- name: Install apt packages | |
uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 | |
with: | |
packages: curl grep libasio-dev libtinyxml2-dev python3 python3-pip software-properties-common wget | |
- name: Get minimum supported version of CMake | |
uses: eProsima/eProsima-CI/external/get-cmake@v0 | |
with: | |
cmakeVersion: '3.22.6' | |
- name: Setup CCache | |
uses: eProsima/eProsima-CI/external/setup-ccache-action@v0 | |
- name: Install colcon | |
uses: eProsima/eProsima-CI/ubuntu/install_colcon@v0 | |
- name: Install Python dependencies | |
uses: eProsima/eProsima-CI/ubuntu/install_python_packages@v0 | |
with: | |
packages: vcstool setuptools gcovr tomark xmltodict jsondiff pandas | |
- name: Get fastrtps.repos file | |
uses: eProsima/eProsima-CI/ubuntu/get_file_from_repo@v0 | |
with: | |
source_repository: eProsima/Fast-DDS | |
source_repository_branch: ${{ env.FASTDDS_BRANCH }} | |
file_name: fastrtps.repos | |
file_result: fastrtps.repos | |
- name: Fetch Fast DDS & dependencies | |
uses: eProsima/eProsima-CI/ubuntu/vcs_import@v0 | |
with: | |
vcs_repos_file: fastrtps.repos | |
destination_workspace: src | |
- name: Checkout Fast DDS branch | |
run: | | |
cd ./src/fastrtps | |
git checkout ${{ env.FASTDDS_BRANCH }} | |
- name: Sync eProsima/Discovery-Server repository | |
uses: actions/checkout@v4 | |
with: | |
path: src/discovery_server | |
repository: eProsima/Discovery-Server | |
ref: ${{ env.DEFAULT_DISCOVERY_SERVER_BRANCH }} | |
- name: Fetch Fast DDS ASan dependencies | |
uses: eProsima/eProsima-CI/multiplatform/vcs_import@v0 | |
with: | |
vcs_repos_file: ${{ github.workspace }}/src/fastrtps/.github/workflows/config/asan.repos | |
destination_workspace: src | |
skip_existing: 'true' | |
- name: Build workspace | |
run: | | |
cat src/fastrtps/.github/workflows/config/asan_colcon.meta | |
colcon build \ | |
--event-handlers=console_direct+ \ | |
--metas src/fastrtps/.github/workflows/config/asan_colcon.meta | |
- name: Run tests Fast DDS | |
run: | | |
source install/setup.bash && \ | |
colcon test \ | |
--packages-select discovery-server \ | |
--event-handlers=console_direct+ \ | |
--return-code-on-test-failure \ | |
--ctest-args \ | |
--label-exclude xfail \ | |
--timeout 300 | |
continue-on-error: true | |
- name: Upload Logs | |
uses: actions/upload-artifact@v1 | |
with: | |
name: asan-ds-logs | |
path: log/ | |
if: always() | |
- name: Report ASAN errors | |
if: always() | |
run: | | |
bash src/fastrtps/.github/workflows/utils/specific_errors_filter.sh "==ERROR:" log/latest_test/discovery-server/stdout_stderr.log _tmp_specific_error_file.log | |
python3 src/fastrtps/.github/workflows/utils/log_parser.py --log-file log/latest_test/discovery-server/stdout_stderr.log --specific-error-file _tmp_specific_error_file.log --output-file $GITHUB_STEP_SUMMARY --sanitizer=asan |