* [Tarantool-patches] [PATCH luajit v2 0/3] build: fixed making tests with ASAN on OSX
@ 2026-07-31 19:11 Evgeniy Temirgaleev via Tarantool-patches
2026-07-31 19:12 ` [Tarantool-patches] [PATCH luajit v2 1/3] " Evgeniy Temirgaleev via Tarantool-patches
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Evgeniy Temirgaleev via Tarantool-patches @ 2026-07-31 19:11 UTC (permalink / raw)
To: Sergey Kaplun, Sergey Bronnikov; +Cc: tarantool-patches
This patch fixes building of the LuaJIT tests with sanitizer checks
on macOS. The fix is in the first commit. The second commit enables
sanitizer checks on macOS in CI. The third contains 'other changes'
which is helpful to debug new CI behavior.
Changes in v2:
- CI updated.
Branch: https://github.com/tarantool/luajit/tree/tmr_g/lj-noticket-fix-test-build-mac
Temir Galeev (3):
build: fixed making tests with ASAN on OSX
ci: enabled sanitizer tests for macOS
ci: added a common way to disable perfomance workflow
.../README.md | 0
.../action.yml | 0
.../actions/setup-sanitizers-macos/README.md | 12 ++++
.../actions/setup-sanitizers-macos/action.yml | 18 +++++
.github/workflows/performance.yml | 1 +
.github/workflows/sanitizers-testing.yml | 65 ++++++++++++++++---
test/LuaJIT-tests/CMakeLists.txt | 3 +-
7 files changed, 89 insertions(+), 10 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
--
2.49.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Tarantool-patches] [PATCH luajit v2 1/3] build: fixed making tests with ASAN on OSX
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 ` 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-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
2 siblings, 0 replies; 4+ messages in thread
From: Evgeniy Temirgaleev via Tarantool-patches @ 2026-07-31 19:12 UTC (permalink / raw)
To: Sergey Kaplun, Sergey Bronnikov; +Cc: tarantool-patches
From: Temir Galeev <temir.galeev@bk.ru>
LuaJIT tests use fixup for Linux to run binaries maked with ASAN option.
The our LibRealPath module used for it. This module doesn't support OSX
and breaks the make process.
So, we disable the fixup for OSX to allow LuaJIT making and running the tests
with ASAN enabled.
---
test/LuaJIT-tests/CMakeLists.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/test/LuaJIT-tests/CMakeLists.txt b/test/LuaJIT-tests/CMakeLists.txt
index c1dbde35..42967cbc 100644
--- a/test/LuaJIT-tests/CMakeLists.txt
+++ b/test/LuaJIT-tests/CMakeLists.txt
@@ -17,7 +17,8 @@ else()
list(APPEND LUAJIT_TESTS_ENV LD_LIBRARY_PATH="${LD_LIBRARY_PATH}")
endif()
-if(LUAJIT_USE_ASAN)
+if(LUAJIT_USE_ASAN
+ AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin")
# When running LuaJIT-tests under ASAN, the internal ASAN check
# failed:
# AddressSanitizer: CHECK failed: asan_interceptors.cpp:356
--
2.49.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Tarantool-patches] [PATCH luajit v2 2/3] ci: enabled sanitizer tests for macOS
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-07-31 19:12 ` 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
2 siblings, 0 replies; 4+ messages in thread
From: Evgeniy Temirgaleev via Tarantool-patches @ 2026-07-31 19:12 UTC (permalink / raw)
To: Sergey Kaplun, Sergey Bronnikov; +Cc: tarantool-patches
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
@@ -0,0 +1,12 @@
+# 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.
+
+## 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..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
+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]
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
+ 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 +67,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
@@ -77,11 +99,13 @@ jobs:
- name: build
run: cmake --build . --parallel
working-directory: ${{ env.BUILDDIR }}
- - name: test
+
+ # 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:
- # 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 +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: \
+ 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
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Tarantool-patches] [PATCH luajit v2 3/3] ci: added a common way to disable perfomance workflow
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-07-31 19:12 ` [Tarantool-patches] [PATCH luajit v2 2/3] ci: enabled sanitizer tests for macOS Evgeniy Temirgaleev via Tarantool-patches
@ 2026-07-31 19:12 ` Evgeniy Temirgaleev via Tarantool-patches
2 siblings, 0 replies; 4+ messages in thread
From: Evgeniy Temirgaleev via Tarantool-patches @ 2026-07-31 19:12 UTC (permalink / raw)
To: Sergey Kaplun, Sergey Bronnikov; +Cc: tarantool-patches
From: Temir Galeev <temir.galeev@bk.ru>
This allow a quick disable of all but one workflow to debug new ci behavior.
The way is to substitue '**-notest' with 'your-branch-name' temporarily
on other workflows while debugging the target workflow.
---
.github/workflows/performance.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml
index fe22eb4b..a872a265 100644
--- a/.github/workflows/performance.yml
+++ b/.github/workflows/performance.yml
@@ -3,6 +3,7 @@ name: Performance
on:
push:
branches-ignore:
+ - '**-notest'
- '**-noperf'
- 'tarantool/release/**'
- 'upstream-**'
--
2.49.0
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-07-31 19:13 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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-07-31 19:12 ` [Tarantool-patches] [PATCH luajit v2 2/3] ci: enabled sanitizer tests for macOS 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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox