Tarantool development patches archive
 help / color / mirror / Atom feed
From: Evgeniy Temirgaleev via Tarantool-patches <tarantool-patches@dev.tarantool.org>
To: Sergey Bronnikov <sergeyb@tarantool.org>
Cc: tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH luajit v3 2/3] ci: enabled sanitizer tests for macOS
Date: Thu, 24 Sep 2026 11:49:18 +0300	[thread overview]
Message-ID: <67760a66-15f3-41c2-bc20-16a2f9649a5f@tarantool.org> (raw)
In-Reply-To: <f16e99a9-2a05-4cf8-9bd7-bfb46c88ad2f@tarantool.org>

Hi, Sergey! Thanks for review.

Please see my answers and fixes. The branch is force pushed.

23.09.2026 17:14, Sergey Bronnikov wrote:
> Hi, Evgeniy!
> 
> 
> Thanks for the fixes!
> 
> Please consider the following comments:
> 
> 1. please fix an action name in the .github/actions/setup-sanitizers- 
> linux/README.md
> 
> s/setup-sanitizers/setup-sanitizers-linux/

Thanks! Fixed.

Also the README is extended with the cc_name optional input description 
(as for macOS) and with mentioning of CMAKE_PREFIX_PATH and 
CMAKE_C_COMPILER which are defined by the action.

> 
> should we set CMAKE_PREFIX_PATH in .github/actions/setup-sanitizers- 
> linux/action.yml like we do in the macos version.

Added with the description.

> 
> the comment "# Try to install" is obvious and excess

Removed.

> 
> 2. there is inconsistency in the .github/actions/setup-sanitizers-macos/ 
> README.md and implementation:
> 
> README says: "Requires input: cc_name" but the current implementation 
> has a default (and `required: false`).

Fixed.

> 
> In action.yml, `CMAKE_C_COMPILER=clang-21` (the name, not the full path) 
> and `CMAKE_PREFIX_PATH` are set,
> 
> and `-DCMAKE_C_COMPILER=clang-21` is passed to the workflow. CMake looks 
> for the compiler in the `PATH` to
> 
> detect it - `CMAKE_PREFIX_PATH` has no effect on this. Either the 
> required compiler is already in the runner's `PATH`
> 
> (in which case `.github/actions/setup-macos` is unnecessary, as it 
> doesn't add anything to the `PATH`),
> 
> or the configuration will fail. You should explicitly add `$(brew -- 
> prefix llvm@21)/bin` to the `PATH`.

CMAKE_PREFIX_PATH is a project aware path to search the tools, includes, 
libraries, etc [1]. It is set to `brew --prefix ...` in the line 44.

CMAKE_C_COMPILER with a name only and the CMAKE_PREFIX_PATH defined is 
ok to CMake's success of a search for the specified compiler on the 
first configuration run (in the clear environment).

1. https://cmake.org/cmake/help/v3.18/variable/CMAKE_PREFIX_PATH.html

> 
> 3. I don't like that we have three copies of ASAN_OPTIONS in the same 
> workflow. It is better to fix this.

Fixed.

> 
> 4. .github/actions/setup-sanitizers-linux/action.yml:
> 
> why CC was renamed to CMAKE_C_COMPILER? I would leave CC env var. 
> CMAKE_C_COMPILER is a CMake option name name, GH action
> 
> knows nothing about CMake.

The action defines CMAKE_C_COMPILER and CMAKE_PREFIX_PATH to pass to 
CMake's corresponding variables (the note is added to both action 
description). I think, it's easy to connect this in mind if names are same.

> 
> Also, please fix CMake name: s/cmake/CMake/

I checked the `cmake` names in a patchset. Seems nothing to replace.

> 
> 
> Sergey
> 
> On 8/28/26 18:12, Evgeniy Temirgaleev wrote:
>> Hi, Sergey! Thanks for review!
>> Please, see my answers below.
>> Fixes applied and the branch is force pushed.
>>
>>     From: Sergey Bronnikov <sergeyb@tarantool.org>
>>     To: Evgeniy Temirgaleev <e.temirgaleev@tarantool.org>, Sergey
>>     Kaplun <skaplun@tarantool.org>
>>     Cc:tarantool-patches@dev.tarantool.org
>>     Date: Thursday, August 27, 2026 3:07 PM +03:00
>>
>>     Hi, Evgeniy,
>>
>>     thanks for the patch! See my comments below.
>>
>>     Sergey
>>
>>     On 8/6/26 15:47, Evgeniy Temirgaleev wrote:
>>>     From: Temir Galeev<temir.galeev@bk.ru>
>>>
>>>     The arm64 and x86_64 architectures with clang/gcc compiler were added
>>>     to the matrix.
>>>     ---
>>>       .../README.md                                 |   0
>>>       .../action.yml                                |   8 +-
>>>       .../actions/setup-sanitizers-macos/README.md  |  15 +++
>>>       .../actions/setup-sanitizers-macos/action.yml |  73 +++++++++++++
>>>       .github/workflows/sanitizers-testing.yml      | 101 ++++++++++++++++--
>>>       5 files changed, 186 insertions(+), 11 deletions(-)
>>>       rename .github/actions/{setup-sanitizers => setup-sanitizers-linux}/README.md (100%)
>>>       rename .github/actions/{setup-sanitizers => setup-sanitizers-linux}/action.yml (76%)
>>>       create mode 100644 .github/actions/setup-sanitizers-macos/README.md
>>>       create mode 100644 .github/actions/setup-sanitizers-macos/action.yml
>>>
>>>     diff --git a/.github/actions/setup-sanitizers/README.md b/.github/actions/setup-sanitizers-linux/README.md
>>>     similarity index 100%
>>>     rename from .github/actions/setup-sanitizers/README.md
>>>     rename to .github/actions/setup-sanitizers-linux/README.md
>>>     diff --git a/.github/actions/setup-sanitizers/action.yml b/.github/actions/setup-sanitizers-linux/action.yml
>>>     similarity index 76%
>>>     rename from .github/actions/setup-sanitizers/action.yml
>>>     rename to .github/actions/setup-sanitizers-linux/action.yml
>>>     index 8642d553..18f5a75d 100644
>>>     --- a/.github/actions/setup-sanitizers/action.yml
>>>     +++ b/.github/actions/setup-sanitizers-linux/action.yml
>>>     @@ -20,13 +20,17 @@ runs:
>>>           - name: Install build and test dependencies
>>>             run: |
>>>               apt -y update
>>>     +        echo Available compilers:
>>>     +        export CC_FAMILY=`echo ${CC_NAME} | sed 's/-.*$//'`
>>>     +        apt list | grep -Pe "^${CC_FAMILY}-[0-9]+/"
>>>     +        # Try to install
>>
>>     Honestly, I don't get why we should available compilers on each run.
>>
>> I think this information is important for some cases to have it on 
>> hand. The example was present in the thread above: https:// 
>> lists.tarantool.org/pipermail/tarantool-patches/2026-August/030774.html
>>
>>     Why we cannot
>>
>>     hardcode compiler here?
>>
>> This patch is not intended to refactor linux sanitizers action, so the 
>> existing solution is used.
>> Only info about available compilers was added:
>> «Also, the 'setup-sanitizers-macos' action supplied with
>> the 'list available compilers' commands in one of it's job.
>> It helps to get the answer to the question:
>> 'Which compiler we can select just now with our current environment?'
>> The 'setup-sanitizers-linux' build job extended with such commands also.»
>>
>>>               apt -y install ${CC_NAME} libstdc++-10-dev cmake ninja-build make perl
>>>             shell: bash
>>>             env:
>>>               CC_NAME: ${{ inputs.cc_name }}
>>>     -    - name: Set specific C compiler as a default toolchain
>>>     +    - name: Set specific C compiler as a default toolchain for cmake
>>     s/cmake/CMake/?
>>
>> Fixed.
>>
>>>             run: |
>>>     -        echo CC=${CC_NAME} | tee -a $GITHUB_ENV
>>>     +        echo CMAKE_C_COMPILER=${CC_NAME} | tee -a $GITHUB_ENV
>>     s/tee -a/>>/ (feel free to ignore, previously tee was used)
>>
>> The ‘tee -a’ method allows the programmer to see the step’s result of 
>> the env definition. It’s used in the ‘setup’, ‘setup-linux’, ‘setup- 
>> macos’ actions and some workflows already. I think it’s a good 
>> approach to use. Also, there is an empty grep for the ‘>> $GITHUB_ENV’ 
>> method in our scripts.
>> If there are the strong reasons to change it, I think it must be done 
>> in all places and in the separate refactoring patch.
> Agree, let's keep as is.
>>
>>>             shell: bash
>>>             env:
>>>               CC_NAME: ${{ inputs.cc_name }}
>>>     diff --git a/.github/actions/setup-sanitizers-macos/README.md b/.github/actions/setup-sanitizers-macos/README.md
>>>     new file mode 100644
>>>     index 00000000..9ac5eb38
>>>     --- /dev/null
>>>     +++ b/.github/actions/setup-sanitizers-macos/README.md
>>>     @@ -0,0 +1,15 @@
>>>     +# Setup environment for sanitizers on macOS
>>>     +
>>>     +Action setups the environment on macOS runners (install requirements, setup the
>>>     +workflow environment, etc) for testing with sanitizers enabled.
>>>     +
>>>     +Requires input:
>>>     +- cc_name as versioned C compiler: gcc-ver or clang-ver.
>>>     +
>>>     +## How to use Github Action from Github workflow
>>>     +
>>>     +Add the following code to the running steps before LuaJIT configuration:
>>>     +```
>>>     +- uses: ./.github/actions/setup-sanitizers-macos
>>>     +  if: ${{ matrix.OS == 'macOS' }}
>>>     +```
>>>     diff --git a/.github/actions/setup-sanitizers-macos/action.yml b/.github/actions/setup-sanitizers-macos/action.yml
>>>     new file mode 100644
>>>     index 00000000..9836ea03
>>>     --- /dev/null
>>>     +++ b/.github/actions/setup-sanitizers-macos/action.yml
>>>     @@ -0,0 +1,73 @@
>>>     +name: Setup CI environment for testing with sanitizers on macOS
>>>     +description: Common part to tweak macOS CI runner environment for sanitizers
>>>     +inputs:
>>>     +  cc_name:
>>>     +    description: C compiler name (for example, gcc-12)
>>>     +    required: false
>>>     +    default: clang-21
>>>     +runs:
>>>     +  using: composite
>>>     +  steps:
>>>     +    - name: Get compiler version from cc_name
>>>     +      shell: bash
>>>     +      env:
>>>     +        CC_NAME: ${{ inputs.cc_name }}
>>>     +      run: |
>>>     +        echo CC_VERSION=`echo ${CC_NAME} | sed 's/.*-//'` | tee -a $GITHUB_ENV
>>>     +    - name: Get brew formula from cc_name
>>>     +      shell: bash
>>>     +      env:
>>>     +        CC_FORMULA_NAME: |-
>>>     +          ${{ case(
>>>     +            startsWith(inputs.cc_name, 'gcc'), 'gcc',
>>>     +            startsWith(inputs.cc_name, 'clang'), 'llvm',
>>>     +            'MISCONFIG'
>>>     +          ) }}
>>>     +      run: |
>>>     +        echo CC_FORMULA=${CC_FORMULA_NAME}@${CC_VERSION} | tee -a $GITHUB_ENV
>>>     +        echo Available formulas: `brew search ${CC_FORMULA_NAME}`
>>>     +    - name: Setup CI environment
>>>     +      uses: ./.github/actions/setup
>>>     +    - name: Set CMAKE_BUILD_PARALLEL_LEVEL
>>>     +      shell: bash
>>>     +      run: |
>>>     +        # Set CMAKE_BUILD_PARALLEL_LEVEL environment variable to
>>>     +        # limit the number of parallel jobs for build/test step.
>>>     +        NPROC=$(sysctl -n hw.logicalcpu 2>/dev/null)
>>>     +        echo CMAKE_BUILD_PARALLEL_LEVEL=$(($NPROC + 1)) | tee -a $GITHUB_ENV
>>>     +    - name: Set MACOSX_DEPLOYMENT_TARGERT
>>>     +      shell: bash
>>>     +      run: |
>>>     +        # Set required MACOSX_DEPLOYMENT_TARGERT environment
>>>     +        # variable for Makefile.original build.
>>>     +        # Seehttps://github.com/LuaJIT/LuaJIT/issues/484,
>>>     +        #https://github.com/LuaJIT/LuaJIT/issues/653.
>>>     +        echo MACOSX_DEPLOYMENT_TARGET=$(sw_vers -productVersion) | tee -a $GITHUB_ENV
>>>     +    - name: Install build and test dependencies
>>>     +      shell: bash
>>>     +      run: |
>>>     +        # Install brew using the command from Homebrew repository
>>>     +        # instructions:https://github.com/Homebrew/install.
>>>     +        # XXX: 'echo' command below is required since brew
>>>     +        # installation script obliges the one to enter a newline
>>>     +        # for confirming the installation via Ruby script.
>>>     +        brew update ||
>>>     +          echo | /usr/bin/ruby -e "$(curl -fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"
>>>     +        # Try to install the packages either upgrade it to avoid
>>>     +        # of fails if the package already exists with the previous
>>>     +        # version.
>>>     +        brew install --force ${CC_FORMULA} cmake make ninja perl ||
>>>     +          brew upgrade ${CC_FORMULA} cmake make ninja perl
>>>     +    - name: Set specific C compiler as a default toolchain for cmake
>>>     +      shell: bash
>>>     +      env:
>>>     +        CC_NAME: ${{ inputs.cc_name }}
>>>     +      run: |
>>>     +        echo CMAKE_C_COMPILER=${CC_NAME} | tee -a $GITHUB_ENV
>>>     +        echo CMAKE_PREFIX_PATH="`brew --prefix ${CC_FORMULA}`" | tee -a $GITHUB_ENV
>>>     +    - name: Log installed compilers
>>>     +      shell: bash
>>>     +      run: |
>>>     +        echo default clang: `clang --version`
>>>     +        echo default gcc: `gcc --version`
>>>     +        echo cmake compiler: `${CMAKE_PREFIX_PATH}/bin/${CMAKE_C_COMPILER} --version`
>>>     diff --git a/.github/workflows/sanitizers-testing.yml b/.github/workflows/sanitizers-testing.yml
>>>     index 4bf7d023..fe550b81 100644
>>>     --- a/.github/workflows/sanitizers-testing.yml
>>>     +++ b/.github/workflows/sanitizers-testing.yml
>>>     @@ -31,17 +31,41 @@ jobs:
>>>           strategy:
>>>             fail-fast: false
>>>             matrix:
>>>     -        # XXX: Let's start with only Linux/x86_64
>>>     +        ARCH: [ARM64, x86_64]
>>>               BUILDTYPE: [Debug, Release]
>>>     -        CC: [gcc-10, clang-11]
>>>     +        OS: [Linux, macOS]
>>>     +        # There are different top-level versions available for Linux and macOS runners.
>>>     +        CC: [gcc-10, clang-11, gcc-15, clang-21]
>>>               include:
>>>                 - BUILDTYPE: Debug
>>>                   CMAKEFLAGS: -DCMAKE_BUILD_TYPE=Debug -DLUA_USE_ASSERT=ON -DLUA_USE_APICHECK=ON
>>>                 - BUILDTYPE: Release
>>>                   CMAKEFLAGS: -DCMAKE_BUILD_TYPE=RelWithDebInfo
>>>     -    runs-on: [self-hosted, regular, Linux, x86_64]
>>>     +        exclude:
>>>     +          # On current runners with Linux/ARM64 environment and
>>>     +          # with LUAJIT_USE_SYSMALLOC=ON the system allocator returns addresses
>>>     +          # with 48-bit set. Thus checkptrGC() fails with new Lua state pointer
>>>     +          # and luajit fails to start with 'cannot create state: not enough memory'
>>>     +          # error. So, we exclude these cases.
>>>     +          - ARCH: ARM64
>>>     +            OS: Linux
>>>     +          # Exclude nonsuitable OS/compiler pairs.
>>>     +          - OS: macOS
>>>     +            CC: gcc-10
>>>     +          - OS: macOS
>>>     +            CC: clang-11
>>>     +          - OS: Linux
>>>     +            CC: gcc-15
>>>     +          - OS: Linux
>>>     +            CC: clang-21
>>>     +          # Exclude macOS/ARM64/gcc case due to some tests are failed.
>>>     +          # Details:https://github.com/tarantool/tarantool/issues/13018
>>>     +          - ARCH: ARM64
>>>     +            OS: macOS
>>>     +            CC: gcc-15
>>>     +    runs-on: [self-hosted, regular, '${{ matrix.OS }}', '${{ matrix.ARCH }}']
>>>           name: >
>>>     -      LuaJIT with ASan and UBSan (Linux/x86_64)
>>>     +      LuaJIT with ASan and UBSan (${{ matrix.OS }}/${{ matrix.ARCH }})
>>>             ${{ matrix.BUILDTYPE }}
>>>             CC:${{ matrix.CC }}
>>>             GC64:ON SYSMALLOC:ON
>>>     @@ -51,7 +75,13 @@ jobs:
>>>                 fetch-depth: 0
>>>                 submodules: recursive
>>>             - name: setup Linux for sanitizers
>>>     -        uses: ./.github/actions/setup-sanitizers
>>>     +        if: ${{ matrix.OS == 'Linux' }}
>>>     +        uses: ./.github/actions/setup-sanitizers-linux
>>>     +        with:
>>>     +          cc_name: ${{ matrix.CC }}
>>>     +      - name: setup macOS for sanitizers
>>>     +        if: ${{ matrix.OS == 'macOS' }}
>>>     +        uses: ./.github/actions/setup-sanitizers-macos
>>>               with:
>>>                 cc_name: ${{ matrix.CC }}
>>>             - name: configure
>>>     @@ -70,18 +100,46 @@ jobs:
>>>                 cmake -S . -B ${{ env.BUILDDIR }}
>>>                 -G Ninja
>>>                 ${{ matrix.CMAKEFLAGS }}
>>>     +          -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
>>>     +          -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
>>>                 -DLUAJIT_ENABLE_GC64=ON
>>>                 -DLUAJIT_USE_ASAN=ON
>>>                 -DLUAJIT_USE_SYSMALLOC=ON
>>>                 -DLUAJIT_USE_UBSAN=ON
>>>     +      - name: Check for possible compiler misconfig
>>>     +        working-directory: ${{ env.BUILDDIR }}
>>>     +        env:
>>>     +          CC_NAME: ${{ matrix.CC }}
>>>     +        run: grep CMakeCache.txt -e CMAKE_C_COMPILER:STRING | grep ${CC_NAME}
>>>             - name: build
>>>               run: cmake --build . --parallel
>>>               working-directory: ${{ env.BUILDDIR }}
>>>     -      - name: test
>>>     +
>>>     +      # Enable as much checks as possible. See more info here:
>>
>>     You say about enabling ASAN features, but some features are
>>     disabled below,
>>
>>     please explain why these features are disabled.
>>
>>>     +      #https://github.com/google/sanitizers/wiki/AddressSanitizerFlags,
>>>     +      #https://github.com/google/sanitizers/wiki/SanitizerCommonFlags.
>>>     +      - name: setup sanitizer options for Linux
>>>     +        if: ${{ matrix.OS == 'Linux' }}
>>>     +        env:
>>>     +          ASAN_OPTIONS: "                    \
>>>     +            detect_invalid_pointer_pairs=1:  \
>>>     +            detect_leaks=1:                  \
>>     already enabled by default
>>>     +            detect_stack_use_after_return=1: \
>>>     +            dump_instruction_bytes=1:        \
>>>     +            heap_profile=0:                  \
>>     disabled by default
>>>     +            print_suppressions=0:            \
>>     Why disabled?
>>>     +            symbolize=1:                     \
>>     enabled by default
>>
>> The patch doesn’t enable ASAN for Linux, so this part isn’t changed: 
>> the ASAN options for Linux is used as is.
>> The ASAN options for macOS is just a copy of the Linux options with 
>> one exception. The detect_leaks was disabled with the explanation in a 
>> comment.
>> The full option investigation and selection in not the main goal of 
>> the patch. The patch enables ASAN for macOS and it’s truly enabled for 
>> the options selected.
>> I agree that the actualization of options for both Linux and macOS is 
>> a valuable job. I suggest to make a ticket for it.
>>
>>>     +            unmap_shadow_on_exit=1:          \
>>>     +          "
>>>     +          UBSAN_OPTIONS: "
>>>     +            print_stacktrace=1 \
>>>     +          "
>>>     +        run: |
>>>     +          echo ASAN_OPTIONS=${ASAN_OPTIONS} | tee -a $GITHUB_ENV
>>>     +          echo UBSAN_OPTIONS=${UBSAN_OPTIONS} | tee -a $GITHUB_ENV
>>     s/tee -a/>>/ (the same thing but usually used in Github documentation)
>>
>> Answered above.
>>
>>>     +      - name: setup sanitizer options for macOS (common)
>>>     +        if: ${{ matrix.OS == 'macOS' && matrix.ARCH != 'ARM64' && matrix.CC != 'clang-21' }}
>>>               env:
>>>     -          # Enable as much checks as possible. See more info here:
>>>     -          #https://github.com/google/sanitizers/wiki/AddressSanitizerFlags,
>>>     -          #https://github.com/google/sanitizers/wiki/SanitizerCommonFlags.
>>>                 ASAN_OPTIONS: "                    \
>>>                   detect_invalid_pointer_pairs=1:  \
>>>                   detect_leaks=1:                  \
>>>     @@ -95,5 +153,30 @@ jobs:
>>>                 UBSAN_OPTIONS: "
>>>                   print_stacktrace=1 \
>>>                 "
>>>     +        run: |
>>>     +          echo ASAN_OPTIONS=${ASAN_OPTIONS} | tee -a $GITHUB_ENV
>>>     +          echo UBSAN_OPTIONS=${UBSAN_OPTIONS} | tee -a $GITHUB_ENV
>>     s/tee -a/>>/
>>
>> The same.
>>
>>>     +      - name: setup sanitizer options for macOS (ARM64/clang-21)
>>>     +        if: ${{ matrix.OS == 'macOS' && matrix.ARCH == 'ARM64' && matrix.CC == 'clang-21' }}
>>>     +        # detect_leaks is disabled due to some tests build is failed.
>>>     +        # Details:https://github.com/tarantool/tarantool/issues/13019
>>>     +        env:
>>>     +          ASAN_OPTIONS: "                    \
>>>     +            detect_invalid_pointer_pairs=1:  \
>>>     +            detect_leaks=0:                  \
>>>     +            detect_stack_use_after_return=1: \
>>>     +            dump_instruction_bytes=1:        \
>>>     +            heap_profile=0:                  \
>>>     +            print_suppressions=0:            \
>>>     +            symbolize=1:                     \
>>>     +            unmap_shadow_on_exit=1:          \
>>     the same questions as above. Also, can we avoid duplication?
>>
>> May be we can use the file to accumulate the options and to update it 
>> in a specific steps. I suggest this task to the new 
>> ticket ‘ci: actualization of the ASAN options for Linux and macOS’ also.
>>
>>>     +          "
>>>     +          UBSAN_OPTIONS: "
>>>     +            print_stacktrace=1 \
>>>     +          "
>>>     +        run: |
>>>     +          echo ASAN_OPTIONS=${ASAN_OPTIONS} | tee -a $GITHUB_ENV
>>>     +          echo UBSAN_OPTIONS=${UBSAN_OPTIONS} | tee -a $GITHUB_ENV
>>     s/tee -a/>>/
>>
>> Answered above.
>>
>>>     +      - name: test
>>>               run: cmake --build . --parallel --target LuaJIT-test
>>>               working-directory: ${{ env.BUILDDIR }}
>>
>> The changes applied:
>> ------------------------------------------------------------------------
>> diff --git a/.github/actions/setup-sanitizers-linux/action.yml 
>> b/.github/actions/setup-sanitizers-linux/action.yml
>> index 9744e5dd..19314dca 100644
>> --- a/.github/actions/setup-sanitizers-linux/action.yml
>> +++ b/.github/actions/setup-sanitizers-linux/action.yml
>> @@ -28,7 +28,7 @@ runs:
>>        shell: bash
>>        env:
>>          CC_NAME: ${{ inputs.cc_name }}
>> -    - name: Set specific C compiler as a default toolchain for cmake
>> +    - name: Set specific C compiler as a default toolchain for CMake.
>>        run: |
>>          echo CMAKE_C_COMPILER=${CC_NAME} | tee -a $GITHUB_ENV
>>        shell: bash
>> diff --git a/.github/actions/setup-sanitizers-macos/action.yml 
>> b/.github/actions/setup-sanitizers-macos/action.yml
>> index d2160faa..740943af 100644
>> --- a/.github/actions/setup-sanitizers-macos/action.yml
>> +++ b/.github/actions/setup-sanitizers-macos/action.yml
>> @@ -35,7 +35,7 @@ runs:
>>          # of fails if the package already exists with the previous
>>          # version.
>>          brew install --force ${CC_FORMULA} || brew upgrade ${CC_FORMULA}
>> -    - name: Set specific C compiler as a default toolchain for cmake
>> +    - name: Set specific C compiler as a default toolchain for CMake.
>>        shell: bash
>>        env:
>>          CC_NAME: ${{ inputs.cc_name }}
>> --
>> Best regards,
>> Evgeniy Temirgaleev

-- 

diff --git a/.github/actions/setup-sanitizers-linux/README.md 
b/.github/actions/setup-sanitizers-linux/README.md
index 3aa9e214..853550c4 100644
--- a/.github/actions/setup-sanitizers-linux/README.md
+++ b/.github/actions/setup-sanitizers-linux/README.md
@@ -3,10 +3,19 @@
  Action setups the environment on Linux runners (install requirements, 
setup the
  workflow environment, etc) for testing with sanitizers enabled.

+Optional input:
+- cc_name as versioned C compiler: gcc-ver or clang-ver.
+
  ## How to use Github Action from Github workflow

  Add the following code to the running steps before LuaJIT configuration:
  ```
-- uses: ./.github/actions/setup-sanitizers
+- uses: ./.github/actions/setup-sanitizers-linux
    if: ${{ matrix.OS == 'Linux' }}
  ```
+
+Pass `CMAKE_PREFIX_PATH` and `CMAKE_C_COMPILER` to CMake:
+```
+  -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
+  -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
+```
diff --git a/.github/actions/setup-sanitizers-linux/action.yml 
b/.github/actions/setup-sanitizers-linux/action.yml
index 19314dca..530b45a7 100644
--- a/.github/actions/setup-sanitizers-linux/action.yml
+++ b/.github/actions/setup-sanitizers-linux/action.yml
@@ -23,14 +23,18 @@ runs:
          echo Available compilers:
          export CC_FAMILY=`echo ${CC_NAME} | sed 's/-.*$//'`
          apt list | grep -Pe "^${CC_FAMILY}-[0-9]+/"
-        # Try to install
          apt -y install ${CC_NAME} libstdc++-10-dev cmake ninja-build 
make perl
        shell: bash
        env:
          CC_NAME: ${{ inputs.cc_name }}
      - name: Set specific C compiler as a default toolchain for CMake.
+      # CMAKE_PREFIX_PATH is set to empty string (it's default value [1])
+      # explicitly to conform the action description. Special prefix is not
+      # needed due to the system wide installed tools is used.
+      # 1. 
https://cmake.org/cmake/help/v3.18/variable/CMAKE_PREFIX_PATH.html
        run: |
          echo CMAKE_C_COMPILER=${CC_NAME} | tee -a $GITHUB_ENV
+        echo CMAKE_PREFIX_PATH= | tee -a $GITHUB_ENV
        shell: bash
        env:
          CC_NAME: ${{ inputs.cc_name }}
diff --git a/.github/actions/setup-sanitizers-macos/README.md 
b/.github/actions/setup-sanitizers-macos/README.md
index 9ac5eb38..a97f533c 100644
--- a/.github/actions/setup-sanitizers-macos/README.md
+++ b/.github/actions/setup-sanitizers-macos/README.md
@@ -3,7 +3,7 @@
  Action setups the environment on macOS runners (install requirements, 
setup the
  workflow environment, etc) for testing with sanitizers enabled.

-Requires input:
+Optional input:
  - cc_name as versioned C compiler: gcc-ver or clang-ver.

  ## How to use Github Action from Github workflow
@@ -13,3 +13,9 @@ Add the following code to the running steps before 
LuaJIT configuration:
  - uses: ./.github/actions/setup-sanitizers-macos
    if: ${{ matrix.OS == 'macOS' }}
  ```
+
+Pass `CMAKE_PREFIX_PATH` and `CMAKE_C_COMPILER` to CMake:
+```
+  -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
+  -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
+```
diff --git a/.github/workflows/sanitizers-testing.yml 
b/.github/workflows/sanitizers-testing.yml
index fe550b81..713434c0 100644
--- a/.github/workflows/sanitizers-testing.yml
+++ b/.github/workflows/sanitizers-testing.yml
@@ -118,27 +118,7 @@ jobs:
        # Enable as much checks as possible. See more info here:
        # https://github.com/google/sanitizers/wiki/AddressSanitizerFlags,
        # https://github.com/google/sanitizers/wiki/SanitizerCommonFlags.
-      - name: setup sanitizer options for Linux
-        if: ${{ matrix.OS == 'Linux' }}
-        env:
-          ASAN_OPTIONS: "                    \
-            detect_invalid_pointer_pairs=1:  \
-            detect_leaks=1:                  \
-            detect_stack_use_after_return=1: \
-            dump_instruction_bytes=1:        \
-            heap_profile=0:                  \
-            print_suppressions=0:            \
-            symbolize=1:                     \
-            unmap_shadow_on_exit=1:          \
-          "
-          UBSAN_OPTIONS: "
-            print_stacktrace=1 \
-          "
-        run: |
-          echo ASAN_OPTIONS=${ASAN_OPTIONS} | tee -a $GITHUB_ENV
-          echo UBSAN_OPTIONS=${UBSAN_OPTIONS} | tee -a $GITHUB_ENV
-      - name: setup sanitizer options for macOS (common)
-        if: ${{ matrix.OS == 'macOS' && matrix.ARCH != 'ARM64' && 
matrix.CC != 'clang-21' }}
+      - name: setup common sanitizer options
          env:
            ASAN_OPTIONS: "                    \
              detect_invalid_pointer_pairs=1:  \
@@ -156,27 +136,14 @@ jobs:
          run: |
            echo ASAN_OPTIONS=${ASAN_OPTIONS} | tee -a $GITHUB_ENV
            echo UBSAN_OPTIONS=${UBSAN_OPTIONS} | tee -a $GITHUB_ENV
-      - name: setup sanitizer options for macOS (ARM64/clang-21)
+      - name: update sanitizer options for macOS (ARM64/clang-21)
          if: ${{ matrix.OS == 'macOS' && matrix.ARCH == 'ARM64' && 
matrix.CC == 'clang-21' }}
          # detect_leaks is disabled due to some tests build is failed.
          # Details: https://github.com/tarantool/tarantool/issues/13019
          env:
-          ASAN_OPTIONS: "                    \
-            detect_invalid_pointer_pairs=1:  \
-            detect_leaks=0:                  \
-            detect_stack_use_after_return=1: \
-            dump_instruction_bytes=1:        \
-            heap_profile=0:                  \
-            print_suppressions=0:            \
-            symbolize=1:                     \
-            unmap_shadow_on_exit=1:          \
-          "
-          UBSAN_OPTIONS: "
-            print_stacktrace=1 \
-          "
+          ASAN_OPTIONS_FIX: ":detect_leaks=0:"
          run: |
-          echo ASAN_OPTIONS=${ASAN_OPTIONS} | tee -a $GITHUB_ENV
-          echo UBSAN_OPTIONS=${UBSAN_OPTIONS} | tee -a $GITHUB_ENV
+          echo ASAN_OPTIONS=${{ env.ASAN_OPTIONS }}${ASAN_OPTIONS_FIX} 
| tee -a $GITHUB_ENV
        - name: test
          run: cmake --build . --parallel --target LuaJIT-test
          working-directory: ${{ env.BUILDDIR }}

--
Best regards,
Evgeniy Temirgaleev


  reply	other threads:[~2026-09-24  8:49 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-06 12:47 [Tarantool-patches] [PATCH luajit v3 0/3] build: fixed making tests with ASAN on OSX Evgeniy Temirgaleev via Tarantool-patches
2026-08-06 12:47 ` [Tarantool-patches] [PATCH luajit v3 1/3] test: " Evgeniy Temirgaleev via Tarantool-patches
2026-08-18 10:24   ` Sergey Kaplun via Tarantool-patches
2026-08-18 19:23     ` Evgeniy Temirgaleev via Tarantool-patches
2026-08-27 11:53   ` Sergey Bronnikov via Tarantool-patches
2026-08-28 11:14     ` Evgeniy Temirgaleev via Tarantool-patches
2026-08-31  8:47       ` Sergey Bronnikov via Tarantool-patches
2026-08-06 12:47 ` [Tarantool-patches] [PATCH luajit v3 2/3] ci: enabled sanitizer tests for macOS Evgeniy Temirgaleev via Tarantool-patches
2026-08-18 10:47   ` Sergey Kaplun via Tarantool-patches
2026-08-18 20:35     ` Evgeniy Temirgaleev via Tarantool-patches
2026-08-19  7:30       ` Sergey Kaplun via Tarantool-patches
2026-08-20  7:53         ` Evgeniy Temirgaleev via Tarantool-patches
2026-08-27 12:07   ` Sergey Bronnikov via Tarantool-patches
2026-08-28 15:12     ` Evgeniy Temirgaleev via Tarantool-patches
2026-09-23 14:14       ` Sergey Bronnikov via Tarantool-patches
2026-09-24  8:49         ` Evgeniy Temirgaleev via Tarantool-patches [this message]
2026-08-06 12:47 ` [Tarantool-patches] [PATCH luajit v3 3/3] ci: added a common way to disable perf workflow Evgeniy Temirgaleev via Tarantool-patches
2026-08-18 10:25   ` Sergey Kaplun via Tarantool-patches
2026-08-27 12:16   ` Sergey Bronnikov via Tarantool-patches

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=67760a66-15f3-41c2-bc20-16a2f9649a5f@tarantool.org \
    --to=tarantool-patches@dev.tarantool.org \
    --cc=e.temirgaleev@tarantool.org \
    --cc=sergeyb@tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH luajit v3 2/3] ci: enabled sanitizer tests for macOS' \
    /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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox