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
next prev parent 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