From: David Marchand <david.marchand@redhat.com>
To: dev@dpdk.org
Cc: john.mcnamara@intel.com, dmitry.kozliuk@gmail.com,
Aaron Conole <aconole@redhat.com>,
Michael Santana <maicolgabriel@hotmail.com>
Subject: [PATCH 3/3] ci: build some job with ASan
Date: Fri, 15 Apr 2022 19:31:27 +0200 [thread overview]
Message-ID: <20220415173127.3838-4-david.marchand@redhat.com> (raw)
In-Reply-To: <20220415173127.3838-1-david.marchand@redhat.com>
Enable ASan, this can greatly help identify leaks and buffer overflows.
Running all unit tests is not possible at the moment: skip unit tests
who have known issues with ASan.
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
.ci/linux-build.sh | 8 ++
.github/workflows/build.yml | 3 +-
app/test/meson.build | 208 +++++++++++++++++++-----------------
3 files changed, 118 insertions(+), 101 deletions(-)
diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
index 774a1441bf..93706c0131 100755
--- a/.ci/linux-build.sh
+++ b/.ci/linux-build.sh
@@ -95,6 +95,14 @@ if [ "$MINI" = "true" ]; then
OPTS="$OPTS -Denable_drivers=net/null"
OPTS="$OPTS -Ddisable_libs=*"
fi
+
+if [ "$ASAN" = "true" ]; then
+ OPTS="$OPTS -Db_sanitize=address"
+ if [ "${CC%%clang}" != "$CC" ]; then
+ OPTS="$OPTS -Db_lundef=false"
+ fi
+fi
+
meson build --werror $OPTS
ninja -C build
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 22daaabb91..45871e76ed 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -16,6 +16,7 @@ jobs:
env:
AARCH64: ${{ matrix.config.cross == 'aarch64' }}
ABI_CHECKS: ${{ contains(matrix.config.checks, 'abi') }}
+ ASAN: ${{ contains(matrix.config.checks, 'asan') }}
BUILD_32BIT: ${{ matrix.config.cross == 'i386' }}
BUILD_DOCS: ${{ contains(matrix.config.checks, 'doc') }}
CC: ccache ${{ matrix.config.compiler }}
@@ -47,7 +48,7 @@ jobs:
- os: ubuntu-18.04
compiler: clang
library: shared
- checks: doc+tests
+ checks: asan+doc+tests
- os: ubuntu-18.04
compiler: gcc
library: static
diff --git a/app/test/meson.build b/app/test/meson.build
index 5fc1dd1b7b..4622b5c010 100644
--- a/app/test/meson.build
+++ b/app/test/meson.build
@@ -149,96 +149,97 @@ test_deps = enabled_libs
# as well as libs, the pci and vdev bus drivers are needed for a lot of tests
test_deps += ['bus_pci', 'bus_vdev']
-# Each test is marked with flag true/false
-# to indicate whether it can run in no-huge mode.
+# Each test is marked with flags:
+# - the first flag indicates whether the test can run in no-huge mode,
+# - the second flag indicates whether the test can run with ASan enabled,
fast_tests = [
- ['acl_autotest', true],
- ['atomic_autotest', false],
- ['bitmap_autotest', true],
- ['bpf_autotest', true],
- ['bpf_convert_autotest', true],
- ['bitops_autotest', true],
- ['byteorder_autotest', true],
- ['cksum_autotest', true],
- ['cmdline_autotest', true],
- ['common_autotest', true],
- ['cpuflags_autotest', true],
- ['debug_autotest', true],
- ['devargs_autotest', true],
- ['eal_flags_c_opt_autotest', false],
- ['eal_flags_main_opt_autotest', false],
- ['eal_flags_n_opt_autotest', false],
- ['eal_flags_hpet_autotest', false],
- ['eal_flags_no_huge_autotest', false],
- ['eal_flags_a_opt_autotest', false],
- ['eal_flags_b_opt_autotest', false],
- ['eal_flags_vdev_opt_autotest', false],
- ['eal_flags_r_opt_autotest', false],
- ['eal_flags_mem_autotest', false],
- ['eal_flags_file_prefix_autotest', false],
- ['eal_flags_misc_autotest', false],
- ['eal_fs_autotest', true],
- ['errno_autotest', true],
- ['ethdev_link_status', true],
- ['event_ring_autotest', true],
- ['fib_autotest', true],
- ['fib6_autotest', true],
- ['func_reentrancy_autotest', false],
- ['hash_autotest', true],
- ['interrupt_autotest', true],
- ['ipfrag_autotest', false],
- ['lcores_autotest', true],
- ['logs_autotest', true],
- ['lpm_autotest', true],
- ['lpm6_autotest', true],
- ['malloc_autotest', false],
- ['mbuf_autotest', false],
- ['mcslock_autotest', false],
- ['memcpy_autotest', true],
- ['memory_autotest', false],
- ['mempool_autotest', false],
- ['memzone_autotest', false],
- ['meter_autotest', true],
- ['multiprocess_autotest', false],
- ['per_lcore_autotest', true],
- ['pflock_autotest', true],
- ['prefetch_autotest', true],
- ['rcu_qsbr_autotest', true],
- ['pie_autotest', true],
- ['rib_autotest', true],
- ['rib6_autotest', true],
- ['ring_autotest', true],
- ['rwlock_test1_autotest', true],
- ['rwlock_rda_autotest', true],
- ['rwlock_rds_wrm_autotest', true],
- ['rwlock_rde_wro_autotest', true],
- ['sched_autotest', true],
- ['security_autotest', false],
- ['spinlock_autotest', true],
- ['stack_autotest', false],
- ['stack_lf_autotest', false],
- ['string_autotest', true],
- ['tailq_autotest', true],
- ['ticketlock_autotest', true],
- ['timer_autotest', false],
- ['user_delay_us', true],
- ['version_autotest', true],
- ['crc_autotest', true],
- ['distributor_autotest', false],
- ['eventdev_common_autotest', true],
- ['fbarray_autotest', true],
- ['hash_readwrite_func_autotest', false],
- ['ipsec_autotest', true],
- ['kni_autotest', false],
- ['kvargs_autotest', true],
- ['member_autotest', true],
- ['power_cpufreq_autotest', false],
- ['power_autotest', true],
- ['power_kvm_vm_autotest', false],
- ['reorder_autotest', true],
- ['service_autotest', true],
- ['thash_autotest', true],
- ['trace_autotest', true],
+ ['acl_autotest', true, true],
+ ['atomic_autotest', false, true],
+ ['bitmap_autotest', true, true],
+ ['bpf_autotest', true, true],
+ ['bpf_convert_autotest', true, true],
+ ['bitops_autotest', true, true],
+ ['byteorder_autotest', true, true],
+ ['cksum_autotest', true, true],
+ ['cmdline_autotest', true, true],
+ ['common_autotest', true, true],
+ ['cpuflags_autotest', true, true],
+ ['debug_autotest', true, true],
+ ['devargs_autotest', true, true],
+ ['eal_flags_c_opt_autotest', false, false],
+ ['eal_flags_main_opt_autotest', false, false],
+ ['eal_flags_n_opt_autotest', false, false],
+ ['eal_flags_hpet_autotest', false, false],
+ ['eal_flags_no_huge_autotest', false, false],
+ ['eal_flags_a_opt_autotest', false, false],
+ ['eal_flags_b_opt_autotest', false, false],
+ ['eal_flags_vdev_opt_autotest', false, false],
+ ['eal_flags_r_opt_autotest', false, false],
+ ['eal_flags_mem_autotest', false, false],
+ ['eal_flags_file_prefix_autotest', false, false],
+ ['eal_flags_misc_autotest', false, false],
+ ['eal_fs_autotest', true, true],
+ ['errno_autotest', true, true],
+ ['ethdev_link_status', true, true],
+ ['event_ring_autotest', true, true],
+ ['fib_autotest', true, true],
+ ['fib6_autotest', true, true],
+ ['func_reentrancy_autotest', false, true],
+ ['hash_autotest', true, true],
+ ['interrupt_autotest', true, true],
+ ['ipfrag_autotest', false, true],
+ ['lcores_autotest', true, true],
+ ['logs_autotest', true, true],
+ ['lpm_autotest', true, true],
+ ['lpm6_autotest', true, true],
+ ['malloc_autotest', false, true],
+ ['mbuf_autotest', false, true],
+ ['mcslock_autotest', false, true],
+ ['memcpy_autotest', true, true],
+ ['memory_autotest', false, true],
+ ['mempool_autotest', false, true],
+ ['memzone_autotest', false, true],
+ ['meter_autotest', true, true],
+ ['multiprocess_autotest', false, false],
+ ['per_lcore_autotest', true, true],
+ ['pflock_autotest', true, true],
+ ['prefetch_autotest', true, true],
+ ['rcu_qsbr_autotest', true, true],
+ ['pie_autotest', true, true],
+ ['rib_autotest', true, true],
+ ['rib6_autotest', true, true],
+ ['ring_autotest', true, true],
+ ['rwlock_test1_autotest', true, true],
+ ['rwlock_rda_autotest', true, true],
+ ['rwlock_rds_wrm_autotest', true, true],
+ ['rwlock_rde_wro_autotest', true, true],
+ ['sched_autotest', true, true],
+ ['security_autotest', false, true],
+ ['spinlock_autotest', true, true],
+ ['stack_autotest', false, true],
+ ['stack_lf_autotest', false, true],
+ ['string_autotest', true, true],
+ ['tailq_autotest', true, true],
+ ['ticketlock_autotest', true, true],
+ ['timer_autotest', false, true],
+ ['user_delay_us', true, true],
+ ['version_autotest', true, true],
+ ['crc_autotest', true, true],
+ ['distributor_autotest', false, true],
+ ['eventdev_common_autotest', true, true],
+ ['fbarray_autotest', true, true],
+ ['hash_readwrite_func_autotest', false, true],
+ ['ipsec_autotest', true, true],
+ ['kni_autotest', false, true],
+ ['kvargs_autotest', true, true],
+ ['member_autotest', true, true],
+ ['power_cpufreq_autotest', false, true],
+ ['power_autotest', true, true],
+ ['power_kvm_vm_autotest', false, true],
+ ['reorder_autotest', true, true],
+ ['service_autotest', true, true],
+ ['thash_autotest', true, true],
+ ['trace_autotest', true, true],
]
# Tests known to have issues or which don't belong in other tests lists.
@@ -345,15 +346,16 @@ endif
if dpdk_conf.has('RTE_LIB_FLOW_CLASSIFY')
test_sources += 'test_flow_classify.c'
- fast_tests += [['flow_classify_autotest', false]]
+ fast_tests += [['flow_classify_autotest', false, true]]
endif
if dpdk_conf.has('RTE_LIB_METRICS')
test_sources += ['test_metrics.c']
- fast_tests += [['metrics_autotest', true]]
+ fast_tests += [['metrics_autotest', true, true]]
endif
if not is_windows and dpdk_conf.has('RTE_LIB_TELEMETRY')
test_sources += ['test_telemetry_json.c', 'test_telemetry_data.c']
- fast_tests += [['telemetry_json_autotest', true], ['telemetry_data_autotest', true]]
+ fast_tests += [['telemetry_json_autotest', true, true]]
+ fast_tests += [['telemetry_data_autotest', true, true]]
endif
if dpdk_conf.has('RTE_LIB_PIPELINE')
# pipeline lib depends on port and table libs, so those must be present
@@ -366,7 +368,7 @@ if dpdk_conf.has('RTE_LIB_PIPELINE')
'test_table_ports.c',
'test_table_tables.c',
]
- fast_tests += [['table_autotest', true]]
+ fast_tests += [['table_autotest', true, false]] # https://bugs.dpdk.org/show_bug.cgi?id=820
endif
# The following linkages of drivers are required because
@@ -386,26 +388,26 @@ if dpdk_conf.has('RTE_NET_RING')
test_sources += 'test_pmd_ring.c'
test_sources += 'test_event_eth_tx_adapter.c'
test_sources += 'sample_packet_forward.c'
- fast_tests += [['ring_pmd_autotest', true]]
+ fast_tests += [['ring_pmd_autotest', true, true]]
perf_test_names += 'ring_pmd_perf_autotest'
- fast_tests += [['event_eth_tx_adapter_autotest', false]]
+ fast_tests += [['event_eth_tx_adapter_autotest', false, true]]
if dpdk_conf.has('RTE_LIB_BITRATESTATS')
test_sources += 'test_bitratestats.c'
- fast_tests += [['bitratestats_autotest', true]]
+ fast_tests += [['bitratestats_autotest', true, true]]
endif
if dpdk_conf.has('RTE_LIB_LATENCYSTATS')
test_sources += 'test_latencystats.c'
- fast_tests += [['latencystats_autotest', true]]
+ fast_tests += [['latencystats_autotest', true, true]]
endif
if dpdk_conf.has('RTE_LIB_PDUMP')
test_sources += 'test_pdump.c'
- fast_tests += [['pdump_autotest', true]]
+ fast_tests += [['pdump_autotest', true, false]]
endif
endif
if dpdk_conf.has('RTE_NET_NULL')
test_deps += 'net_null'
test_sources += 'test_vdev.c'
- fast_tests += [['vdev_autotest', true]]
+ fast_tests += [['vdev_autotest', true, true]]
endif
if dpdk_conf.has('RTE_HAS_LIBPCAP')
@@ -431,7 +433,7 @@ if dpdk_conf.has('RTE_LIB_COMPRESSDEV')
if compress_test_dep.found()
test_dep_objs += compress_test_dep
test_sources += 'test_compressdev.c'
- fast_tests += [['compressdev_autotest', false]]
+ fast_tests += [['compressdev_autotest', false, true]]
endif
endif
@@ -478,6 +480,12 @@ foreach arg : fast_tests
endif
endif
+ if get_option('b_sanitize') == 'address' or get_option('b_sanitize') == 'address,undefined'
+ if not arg[2]
+ run_test = false
+ endif
+ endif
+
if (get_option('default_library') == 'shared' and
arg[0] == 'event_eth_tx_adapter_autotest')
foreach drv:dpdk_drivers
--
2.23.0
next prev parent reply other threads:[~2022-04-15 17:31 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-15 17:31 [PATCH 0/3] Enable ASan in GHA David Marchand
2022-04-15 17:31 ` [PATCH 1/3] test/mem: disable ASan when accessing unallocated mem David Marchand
2022-04-20 14:48 ` Burakov, Anatoly
2022-04-15 17:31 ` [PATCH 2/3] mem: fix ASan shadow for remapped memory segments David Marchand
2022-04-20 14:47 ` Burakov, Anatoly
2022-04-21 9:37 ` David Marchand
2022-04-21 9:50 ` David Marchand
2022-04-21 13:18 ` Burakov, Anatoly
2022-04-26 12:54 ` Burakov, Anatoly
2022-04-26 14:15 ` David Marchand
2022-04-26 16:07 ` Burakov, Anatoly
2022-04-27 15:32 ` Burakov, Anatoly
2022-04-15 17:31 ` David Marchand [this message]
2022-05-05 9:29 ` [PATCH v2 0/2] Enable ASan in GHA David Marchand
2022-05-05 9:29 ` [PATCH v2 1/2] test/mem: disable ASan when accessing unallocated mem David Marchand
2022-05-05 9:29 ` [PATCH v2 2/2] ci: build some job with ASan David Marchand
2022-05-10 19:22 ` Aaron Conole
2022-05-11 12:01 ` [PATCH v2 0/2] Enable ASan in GHA David Marchand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220415173127.3838-4-david.marchand@redhat.com \
--to=david.marchand@redhat.com \
--cc=aconole@redhat.com \
--cc=dev@dpdk.org \
--cc=dmitry.kozliuk@gmail.com \
--cc=john.mcnamara@intel.com \
--cc=maicolgabriel@hotmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).