Tarantool development patches archive
 help / color / mirror / Atom feed
From: Sergey Kaplun via Tarantool-patches <tarantool-patches@dev.tarantool.org>
To: Evgeniy Temirgaleev <e.temirgaleev@tarantool.org>
Cc: tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH luajit v2 2/3] ci: enabled sanitizer tests for macOS
Date: Tue, 4 Aug 2026 15:55:58 +0300	[thread overview]
Message-ID: <anHhXrYMmmGpd7xA@root> (raw)
In-Reply-To: <83481da1b7122a93f6705837ebd0d6a1174b0119.1785521480.git.e.temirgaleev@tarantool.org>

Hi, Evgeniy!
Thanks for the patch!
Please, consider my questions below.

On 31.07.26, Evgeniy Temirgaleev wrote:
> From: Temir Galeev <temir.galeev@bk.ru>
> 
> The arm64 and x86_64 architectures with clang compiler were added
> to the matrix.
> ---
>  .../README.md                                 |  0
>  .../action.yml                                |  0
>  .../actions/setup-sanitizers-macos/README.md  | 12 ++++
>  .../actions/setup-sanitizers-macos/action.yml | 18 +++++
>  .github/workflows/sanitizers-testing.yml      | 65 ++++++++++++++++---
>  5 files changed, 86 insertions(+), 9 deletions(-)
>  rename .github/actions/{setup-sanitizers => setup-sanitizers-linux}/README.md (100%)
>  rename .github/actions/{setup-sanitizers => setup-sanitizers-linux}/action.yml (100%)
>  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 100%
> rename from .github/actions/setup-sanitizers/action.yml
> rename to .github/actions/setup-sanitizers-linux/action.yml
> diff --git a/.github/actions/setup-sanitizers-macos/README.md b/.github/actions/setup-sanitizers-macos/README.md
> new file mode 100644
> index 00000000..7061c042
> --- /dev/null
> +++ b/.github/actions/setup-sanitizers-macos/README.md

<snipped>

> diff --git a/.github/actions/setup-sanitizers-macos/action.yml b/.github/actions/setup-sanitizers-macos/action.yml
> new file mode 100644
> index 00000000..441285f9
> --- /dev/null
> +++ b/.github/actions/setup-sanitizers-macos/action.yml
> @@ -0,0 +1,18 @@
> +name: Setup CI environment for testing with sanitizers on macOS
> +description: Common part to tweak macOS CI runner environment for sanitizers

For macOS this looks weird, since we just use the default compiler anyway.
Is it possible to specify compiler version on macOS?

> +inputs:
> +  cc_name:
> +    description: C compiler name (for example, gcc-12)
> +    required: false
> +    default: clang
> +runs:
> +  using: composite
> +  steps:
> +    - name: Setup CI environment on macOS
> +      uses: ./.github/actions/setup-macos
> +    - name: Set specific C compiler as a default toolchain
> +      run: |
> +        echo CC=${CC_NAME} | tee -a $GITHUB_ENV
> +      shell: bash
> +      env:
> +        CC_NAME: ${{ inputs.cc_name }}
> diff --git a/.github/workflows/sanitizers-testing.yml b/.github/workflows/sanitizers-testing.yml
> index 4bf7d023..aa9eae16 100644
> --- a/.github/workflows/sanitizers-testing.yml
> +++ b/.github/workflows/sanitizers-testing.yml
> @@ -31,17 +31,33 @@ jobs:
>      strategy:
>        fail-fast: false
>        matrix:
> -        # XXX: Let's start with only Linux/x86_64
> +        ARCH: [ARM64, x86_64]

Side note: For local x86_64 macOS, I can't build LuaJIT with enabled
since ASAN just can't be initialized. Hence it leads to buildvm
crashes. I suppose there is some issue with modern clang. So, the
version specification is desirable.

>          BUILDTYPE: [Debug, Release]
> -        CC: [gcc-10, clang-11]
> +        OS: [Linux, macOS]
> +        # Versioned compilers are for Linux.
> +        CC: [gcc-10, clang-11, clang]
>          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:
> +          - OS: macOS
> +            CC: gcc-10
> +          - OS: macOS
> +            CC: clang-11
> +          - OS: Linux
> +            CC: clang
> +          # 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 this case.
> +          - ARCH: ARM64
> +            OS: Linux

These excludes looks too drammatic. Have you considering include option instead?
Does it look better/more compact?

> +    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

<snipped>

>            ASAN_OPTIONS: "                    \
>              detect_invalid_pointer_pairs=1:  \
>              detect_leaks=1:                  \
> @@ -95,5 +119,28 @@ 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
> +      - name: setup sanitizer options for macOS
> +        if: ${{ matrix.OS == 'macOS' }}
> +        env:
> +          ASAN_OPTIONS: "                    \
> +            detect_invalid_pointer_pairs=1:  \
> +            detect_leaks=0:                  \

Why do we need to exclude detect_leaks for macOS?

> +            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: test
>          run: cmake --build . --parallel --target LuaJIT-test
>          working-directory: ${{ env.BUILDDIR }}
> -- 
> 2.49.0
> 

-- 
Best regards,
Sergey Kaplun

  reply	other threads:[~2026-08-04 12:56 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-31 19:11 [Tarantool-patches] [PATCH luajit v2 0/3] build: fixed making tests with ASAN on OSX Evgeniy Temirgaleev via Tarantool-patches
2026-07-31 19:12 ` [Tarantool-patches] [PATCH luajit v2 1/3] " Evgeniy Temirgaleev via Tarantool-patches
2026-08-04 12:59   ` Sergey Kaplun via Tarantool-patches
2026-08-04 20:53   ` Sergey Kaplun via Tarantool-patches
2026-08-05 19:27     ` Evgeniy Temirgaleev via Tarantool-patches
2026-07-31 19:12 ` [Tarantool-patches] [PATCH luajit v2 2/3] ci: enabled sanitizer tests for macOS Evgeniy Temirgaleev via Tarantool-patches
2026-08-04 12:55   ` Sergey Kaplun via Tarantool-patches [this message]
2026-08-05 19:48     ` Evgeniy Temirgaleev via Tarantool-patches
2026-07-31 19:12 ` [Tarantool-patches] [PATCH luajit v2 3/3] ci: added a common way to disable perfomance workflow Evgeniy Temirgaleev via Tarantool-patches
2026-08-04 13:00   ` Sergey Kaplun via Tarantool-patches
2026-08-04 20:48   ` Sergey Kaplun via Tarantool-patches
2026-08-05 19:30     ` Evgeniy Temirgaleev 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=anHhXrYMmmGpd7xA@root \
    --to=tarantool-patches@dev.tarantool.org \
    --cc=e.temirgaleev@tarantool.org \
    --cc=skaplun@tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH luajit v2 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