<HTML><BODY><div class="cl-rg6l9irkzz"><div>Hi, Sergey! Thanks for review!</div><div class="mail-quote-collapse"><blockquote style="border-left:1px solid #0857A6;margin:10px;padding:0 0 0 10px"><span>From: Sergey Kaplun <<a href="mailto:skaplun@tarantool.org">skaplun@tarantool.org</a>><br>To: Evgeniy Temirgaleev <<a href="mailto:e.temirgaleev@tarantool.org">e.temirgaleev@tarantool.org</a>><br>Cc: Sergey Bronnikov <<a href="mailto:sergeyb@tarantool.org">sergeyb@tarantool.org</a>>,<a href="mailto:tarantool-patches@dev.tarantool.org">tarantool-patches@dev.tarantool.org</a><br>Date: Tuesday, August 4, 2026 3:56 PM +03:00</span><br> <div><div id=""><div class="cl-auco1253j8"><div class="js-helper_mr_css_attr js-readmsg-msg_mr_css_attr"><div id="style_17858481790322159485_mr_css_attr"><div id="style_17858481790322159485_BODY_mr_css_attr">Hi, Evgeniy!<br>Thanks for the patch!<br>Please, consider my questions below.<br><br>On 31.07.26, Evgeniy Temirgaleev wrote:<br>> From: Temir Galeev <<a href="mailto:temir.galeev@bk.ru">temir.galeev@bk.ru</a>><br>><br>> The arm64 and x86_64 architectures with clang compiler were added<br>> to the matrix.<br>> ---<br>> .../README.md | 0<br>> .../action.yml | 0<br>> .../actions/setup-sanitizers-macos/README.md | 12 ++++<br>> .../actions/setup-sanitizers-macos/action.yml | 18 +++++<br>> .github/workflows/sanitizers-testing.yml | 65 ++++++++++++++++---<br>> 5 files changed, 86 insertions(+), 9 deletions(-)<br>> rename .github/actions/{setup-sanitizers => setup-sanitizers-linux}/README.md (100%)<br>> rename .github/actions/{setup-sanitizers => setup-sanitizers-linux}/action.yml (100%)<br>> create mode 100644 .github/actions/setup-sanitizers-macos/README.md<br>> create mode 100644 .github/actions/setup-sanitizers-macos/action.yml<br>><br>> diff --git a/.github/actions/setup-sanitizers/README.md b/.github/actions/setup-sanitizers-linux/README.md<br>> similarity index 100%<br>> rename from .github/actions/setup-sanitizers/README.md<br>> rename to .github/actions/setup-sanitizers-linux/README.md<br>> diff --git a/.github/actions/setup-sanitizers/action.yml b/.github/actions/setup-sanitizers-linux/action.yml<br>> similarity index 100%<br>> rename from .github/actions/setup-sanitizers/action.yml<br>> rename to .github/actions/setup-sanitizers-linux/action.yml<br>> diff --git a/.github/actions/setup-sanitizers-macos/README.md b/.github/actions/setup-sanitizers-macos/README.md<br>> new file mode 100644<br>> index 00000000..7061c042<br>> --- /dev/null<br>> +++ b/.github/actions/setup-sanitizers-macos/README.md<br><br><snipped><br><br>> diff --git a/.github/actions/setup-sanitizers-macos/action.yml b/.github/actions/setup-sanitizers-macos/action.yml<br>> new file mode 100644<br>> index 00000000..441285f9<br>> --- /dev/null<br>> +++ b/.github/actions/setup-sanitizers-macos/action.yml<br>> @@ -0,0 +1,18 @@<br>> +name: Setup CI environment for testing with sanitizers on macOS<br>> +description: Common part to tweak macOS CI runner environment for sanitizers<br><br>For macOS this looks weird, since we just use the default compiler anyway.<br>Is it possible to specify compiler version on macOS?</div></div></div></div></div></div></blockquote></div></div><div>None. The reason to add this action is the saving the logic of similar ‘setup-sanitizer-linux’ action, which is defines compiler for next steps.</div><div> </div><div>But I rewrite this action completely to allow compiler selection. I shall present it in the patch v3.</div><div class="cl-rg6l9irkzz"><div class="mail-quote-collapse"><blockquote style="border-left:1px solid #0857A6;margin:10px;padding:0 0 0 10px"><div><div><div class="cl-auco1253j8"><div class="js-helper_mr_css_attr js-readmsg-msg_mr_css_attr"><div><div><br>> +inputs:<br>> + cc_name:<br>> + description: C compiler name (for example, gcc-12)<br>> + required: false<br>> + default: clang<br>> +runs:<br>> + using: composite<br>> + steps:<br>> + - name: Setup CI environment on macOS<br>> + uses: ./.github/actions/setup-macos<br>> + - name: Set specific C compiler as a default toolchain<br>> + run: |<br>> + echo CC=${CC_NAME} | tee -a $GITHUB_ENV<br>> + shell: bash<br>> + env:<br>> + CC_NAME: ${{ inputs.cc_name }}<br>> diff --git a/.github/workflows/sanitizers-testing.yml b/.github/workflows/sanitizers-testing.yml<br>> index 4bf7d023..aa9eae16 100644<br>> --- a/.github/workflows/sanitizers-testing.yml<br>> +++ b/.github/workflows/sanitizers-testing.yml<br>> @@ -31,17 +31,33 @@ jobs:<br>> strategy:<br>> fail-fast: false<br>> matrix:<br>> - # XXX: Let's start with only Linux/x86_64<br>> + ARCH: [ARM64, x86_64]<br><br>Side note: For local x86_64 macOS, I can't build LuaJIT with enabled<br>since ASAN just can't be initialized. Hence it leads to buildvm<br>crashes. I suppose there is some issue with modern clang. So, the<br>version specification is desirable.</div></div></div></div></div></div></blockquote></div></div><div>Thanks for the notice. It’s done in the patch v3. The experience showed that the compiler version may have significant influence on the succession of ASAN building and testing.</div><div class="cl-rg6l9irkzz"><div class="mail-quote-collapse"><blockquote style="border-left:1px solid #0857A6;margin:10px;padding:0 0 0 10px"><div><div><div class="cl-auco1253j8"><div class="js-helper_mr_css_attr js-readmsg-msg_mr_css_attr"><div><div><br>> BUILDTYPE: [Debug, Release]<br>> - CC: [gcc-10, clang-11]<br>> + OS: [Linux, macOS]<br>> + # Versioned compilers are for Linux.<br>> + CC: [gcc-10, clang-11, clang]<br>> include:<br>> - BUILDTYPE: Debug<br>> CMAKEFLAGS: -DCMAKE_BUILD_TYPE=Debug -DLUA_USE_ASSERT=ON -DLUA_USE_APICHECK=ON<br>> - BUILDTYPE: Release<br>> CMAKEFLAGS: -DCMAKE_BUILD_TYPE=RelWithDebInfo<br>> - runs-on: [self-hosted, regular, Linux, x86_64]<br>> + exclude:<br>> + - OS: macOS<br>> + CC: gcc-10<br>> + - OS: macOS<br>> + CC: clang-11<br>> + - OS: Linux<br>> + CC: clang<br>> + # On current runners with Linux/ARM64 environment and<br>> + # with LUAJIT_USE_SYSMALLOC=ON the system allocator returns addresses<br>> + # with 48-bit set. Thus checkptrGC() fails with new Lua state pointer<br>> + # and luajit fails to start with 'cannot create state: not enough memory'<br>> + # error. So, we exclude this case.<br>> + - ARCH: ARM64<br>> + OS: Linux<br><br>These excludes looks too drammatic. Have you considering include option instead?<br>Does it look better/more compact?</div></div></div></div></div></div></blockquote></div></div><div>I tried with include. It doesn’t help to make things better.</div><div class="cl-rg6l9irkzz"><div class="mail-quote-collapse"><blockquote style="border-left:1px solid #0857A6;margin:10px;padding:0 0 0 10px"><div><div><div class="cl-auco1253j8"><div class="js-helper_mr_css_attr js-readmsg-msg_mr_css_attr"><div><div><br>> + runs-on: [self-hosted, regular, '${{ matrix.OS }}', '${{ matrix.ARCH }}']<br>> name: ><br>> - LuaJIT with ASan and UBSan (Linux/x86_64)<br>> + LuaJIT with ASan and UBSan (${{ matrix.OS }}/${{ matrix.ARCH }})<br>> ${{ matrix.BUILDTYPE }}<br>> CC:${{ matrix.CC }}<br>> GC64:ON SYSMALLOC:ON<br><br><snipped><br><br>> ASAN_OPTIONS: " \<br>> detect_invalid_pointer_pairs=1: \<br>> detect_leaks=1: \<br>> @@ -95,5 +119,28 @@ jobs:<br>> UBSAN_OPTIONS: "<br>> print_stacktrace=1 \<br>> "<br>> + run: |<br>> + echo ASAN_OPTIONS=${ASAN_OPTIONS} | tee -a $GITHUB_ENV<br>> + echo UBSAN_OPTIONS=${UBSAN_OPTIONS} | tee -a $GITHUB_ENV<br>> + - name: setup sanitizer options for macOS<br>> + if: ${{ matrix.OS == 'macOS' }}<br>> + env:<br>> + ASAN_OPTIONS: " \<br>> + detect_invalid_pointer_pairs=1: \<br>> + detect_leaks=0: \<br><br>Why do we need to exclude detect_leaks for macOS?</div></div></div></div></div></div></blockquote></div></div><div>For the builtin macOS compiler (clang 17) this option isn’t supported. I got an ‘not supported for the platform’ error.</div><div>But for newest versions of gcc/clang it works. I set this option to ‘on’ in the patch v3.</div><div class="cl-rg6l9irkzz"><div class="mail-quote-collapse"><blockquote style="border-left:1px solid #0857A6;margin:10px;padding:0 0 0 10px"><div><div><div class="cl-auco1253j8"><div class="js-helper_mr_css_attr js-readmsg-msg_mr_css_attr"><div><div><br>> + detect_stack_use_after_return=1: \<br>> + dump_instruction_bytes=1: \<br>> + heap_profile=0: \<br>> + print_suppressions=0: \<br>> + symbolize=1: \<br>> + unmap_shadow_on_exit=1: \<br>> + "<br>> + UBSAN_OPTIONS: "<br>> + print_stacktrace=1 \<br>> + "<br>> + run: |<br>> + echo ASAN_OPTIONS=${ASAN_OPTIONS} | tee -a $GITHUB_ENV<br>> + echo UBSAN_OPTIONS=${UBSAN_OPTIONS} | tee -a $GITHUB_ENV<br>> + - name: test<br>> run: cmake --build . --parallel --target LuaJIT-test<br>> working-directory: ${{ env.BUILDDIR }}<br>> --<br>> 2.49.0<br>><br><br>--<br>Best regards,<br>Sergey Kaplun</div></div></div></div></div></div></blockquote></div></div><div> </div><div><div>--<br>Best regards,</div><div>Evgeniy Temirgaleev</div></div></BODY></HTML>