On 2 Jan 2024, at 12:44, Ilya Maximets wrote:

> On 12/22/23 12:12, Eelco Chaudron wrote:
>> This patch combines the existing ubsan and asan GitHub actions
>> tests into one.
>
> Not sure how important it is, but worth mentioning that this
> change reduces the test coverage.  Some tests are skipped
> for ubsan specifically, but not for asan.  IIRC, these are
> tests for the process monitoring and backtraces that trigger
> SIGSEGV; ubsan can't handle this signal, while asan can.
>
> At least, this should be added into commit message.

I was not aware of this. Should we maybe keep them seperate for the base run, 
and only combine the datapath ones?

>> Signed-off-by: Eelco Chaudron <[email protected]>
>> ---
>>  .ci/linux-build.sh                   |    4 ++--
>>  .github/workflows/build-and-test.yml |    8 ++------
>>  2 files changed, 4 insertions(+), 8 deletions(-)
>>
>> diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
>> index 90581c10b..c780dac01 100755
>> --- a/.ci/linux-build.sh
>> +++ b/.ci/linux-build.sh
>> @@ -102,14 +102,14 @@ else
>>      CFLAGS_FOR_OVS="${CFLAGS_FOR_OVS} ${SPARSE_FLAGS}"
>>  fi
>>
>> -if [ "$ASAN" ]; then
>> +if [[ $SANITIZERS == *asan* ]]; then
>>      # This will override default option configured in tests/atlocal.in.
>>      export ASAN_OPTIONS='detect_leaks=1'
>>      CFLAGS_ASAN="-fno-omit-frame-pointer -fno-common -fsanitize=address"
>>      CFLAGS_FOR_OVS="${CFLAGS_FOR_OVS} ${CFLAGS_ASAN}"
>>  fi
>>
>> -if [ "$UBSAN" ]; then
>> +if [[ $SANITIZERS == *ubsan* ]]; then
>>      # Use the default options configured in tests/atlocal.in, in 
>> UBSAN_OPTIONS.
>>      CFLAGS_UBSAN="-fno-omit-frame-pointer -fno-common -fsanitize=undefined"
>>      CFLAGS_FOR_OVS="${CFLAGS_FOR_OVS} ${CFLAGS_UBSAN}"
>
> Do we need two separate cases now?  Also, we don't need to
> add -fno-omit-frame-pointer and -fno-common twice.

ACK, I was assuming someone could still request one of the two.

But if we only want to support running both, I can make the SANITIZERS variable 
a boolean.

> It is also a little annoying that ASAN_OPTIONS and UBSAN_OPTIONS
> are not really separate sets of options, they do overlap.
> For example, if the log_path is defined in both, the one from
> UBSAN_OPTIONS will actually be used.  So all the log files
> will be ubsan.* even if they come from asan.  Maybe rename these
> files as well, similarly to what OVN project did?

Yes, will make that change.

> I'm not sure if there are other option conflicts.

Did a quick search, but could not find it.

>> diff --git a/.github/workflows/build-and-test.yml 
>> b/.github/workflows/build-and-test.yml
>> index 710757693..b901e6d57 100644
>> --- a/.github/workflows/build-and-test.yml
>> +++ b/.github/workflows/build-and-test.yml
>> @@ -78,14 +78,13 @@ jobs:
>>          automake libtool gcc bc libjemalloc2 libjemalloc-dev libssl-dev \
>>          llvm-dev libnuma-dev libpcap-dev selinux-policy-dev libbpf-dev \
>>          lftp libreswan
>> -      ASAN:        ${{ matrix.asan }}
>> -      UBSAN:       ${{ matrix.ubsan }}
>>        CC:          ${{ matrix.compiler }}
>>        DPDK:        ${{ matrix.dpdk }}
>>        DPDK_SHARED: ${{ matrix.dpdk_shared }}
>>        LIBS:        ${{ matrix.libs }}
>>        M32:         ${{ matrix.m32 }}
>>        OPTS:        ${{ matrix.opts }}
>> +      SANITIZERS:  ${{ matrix.sanitizers }}
>>        STD:         ${{ matrix.std }}
>>        TESTSUITE:   ${{ matrix.testsuite }}
>>        TEST_RANGE:  ${{ matrix.test_range }}
>> @@ -111,11 +110,8 @@ jobs:
>>            - compiler:     gcc
>>              testsuite:    test
>>            - compiler:     clang
>> +            sanitizers:   asan ubsan
>
> If we define this variable as 'address,undefined', we could
> plug this variable directly into the '-fsanitize='.

We could do this, see also above about supporting individual options.

>>              testsuite:    test
>> -            asan:         asan
>> -          - compiler:     clang
>> -            testsuite:    test
>> -            ubsan:        ubsan
>>
>>            - compiler:     gcc
>>              testsuite:    test
>>
>
> Best regards, Ilya Maximets.

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to