Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
351c87b
enable sanitizers for macOS, Linux and Android
CedricGuillemet Oct 27, 2025
b78acf4
no &&
CedricGuillemet Oct 27, 2025
c2f1138
syntax
CedricGuillemet Oct 27, 2025
ed44d18
job names
CedricGuillemet Oct 27, 2025
a388975
parameters
CedricGuillemet Oct 27, 2025
f46d415
disable unity build
CedricGuillemet Oct 28, 2025
ba0e5c3
missing header, unity build back
CedricGuillemet Oct 28, 2025
121cd8a
linux build
CedricGuillemet Oct 28, 2025
46a5c25
rtti for glslang
CedricGuillemet Oct 28, 2025
a1c6286
Merge branch 'ASAN' of https://github.com/CedricGuillemet/BabylonNati…
CedricGuillemet Oct 28, 2025
2fa6784
android sanitizers
CedricGuillemet Oct 29, 2025
18f0dab
ndk 28
CedricGuillemet Oct 29, 2025
c11fba6
sanitizers for unittests android
CedricGuillemet Oct 29, 2025
f17242c
Merge branch 'master' of https://github.com/babylonjs/BabylonNative i…
CedricGuillemet Nov 13, 2025
8d910e7
removed perf test
CedricGuillemet Nov 13, 2025
8f93ea4
JSRuntimeHost update
CedricGuillemet Nov 13, 2025
55ee800
removed android + sanitizer
CedricGuillemet Nov 14, 2025
816ee5d
Merge branch 'master' of https://github.com/babylonjs/BabylonNative i…
CedricGuillemet Nov 14, 2025
31f815f
disable ubsan for 1 template method
CedricGuillemet Nov 14, 2025
c80dd5c
fix leaks
CedricGuillemet Nov 14, 2025
88724f3
fix casting
CedricGuillemet Nov 14, 2025
9345b67
leaks and warnings
CedricGuillemet Nov 14, 2025
51740d3
early exit
CedricGuillemet Nov 14, 2025
a46ad85
mem leak
CedricGuillemet Nov 14, 2025
654407c
removed union
CedricGuillemet Nov 14, 2025
5c1c3af
operator =
CedricGuillemet Nov 17, 2025
2bbe45b
check for self assignment
CedricGuillemet Nov 17, 2025
fa7fa44
Merge branch 'master' of https://github.com/babylonjs/BabylonNative i…
CedricGuillemet Nov 17, 2025
8b77c08
Merge branch 'master' of https://github.com/babylonjs/BabylonNative i…
CedricGuillemet Nov 18, 2025
2b399ad
win32 sanitizer
CedricGuillemet Nov 19, 2025
32a2773
fix errors reported by ASAN
CedricGuillemet Nov 19, 2025
a1bcc71
Merge remote-tracking branch 'origin/ASAN' into ASAN
CedricGuillemet Nov 19, 2025
8b0f51c
Merge branch 'master' of https://github.com/babylonjs/BabylonNative i…
CedricGuillemet Nov 19, 2025
5db4de6
conflict
CedricGuillemet Nov 19, 2025
e9c3faa
ASAN .dlls
CedricGuillemet Nov 20, 2025
47143d7
Merge branch 'master' of https://github.com/babylonjs/BabylonNative i…
CedricGuillemet Nov 20, 2025
c220203
asan dll destination path fix
CedricGuillemet Nov 20, 2025
50bee86
ASAN suppress list for Linux
CedricGuillemet Nov 20, 2025
c3d8bd8
Merge remote-tracking branch 'origin/ASAN' into ASAN
CedricGuillemet Nov 20, 2025
47cede9
job parameter consistency
CedricGuillemet Nov 20, 2025
68b827d
more on job parameters
CedricGuillemet Nov 20, 2025
b4050c3
condition
CedricGuillemet Nov 20, 2025
9fb5fa2
condition
CedricGuillemet Nov 20, 2025
1142393
condition
CedricGuillemet Nov 20, 2025
1a52baa
leaking display
CedricGuillemet Nov 20, 2025
25d7ce0
typo
CedricGuillemet Nov 20, 2025
097313c
removed condition
CedricGuillemet Nov 20, 2025
39d2ebd
suppress comment, move unittest before VT
CedricGuillemet Nov 20, 2025
e327445
test with higherlevel function to suppress reported leaks
CedricGuillemet Nov 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/asan_suppress.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Suppress leaks from dbus. No direct leak visible with BN.
leak:bmalloc_allocate_casual
leak:reallocate_for_length
leak:dbus_message_new_empty_header
# false positive : Display opened and terminated still listed as a leak.
# Using a bit broader function because of unexplained reported leaks with isTextureFormatValid
leak:bgfx::rendererCreate
7 changes: 5 additions & 2 deletions .github/jobs/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ jobs:
timeoutInMinutes: 45
pool:
vmImage: ${{ parameters.vmImage }}


variables:
SANITIZER_FLAG: ${{ coalesce(replace(format('{0}', parameters.Sanitizers), 'True', 'ON'), 'OFF') }}

steps:
- template: cmake.yml
parameters:
Expand All @@ -26,7 +29,7 @@ jobs:
workingDirectory: 'Apps/Playground/Android'
gradleWrapperFile: 'Apps/Playground/Android/gradlew'
gradleOptions: '-Xmx1536m'
options: '-PJSEngine=${{ parameters.JSEngine }} -PARM64Only -PNDK_VERSION=$(NDK_VERSION)'
options: '-PJSEngine=${{ parameters.JSEngine }} -PARM64Only -PNDK_VERSION=$(NDK_VERSION) -PSANITIZERS=$(SANITIZER_FLAG)'
publishJUnitResults: false
tasks: 'assembleRelease'
displayName: 'Build Playground ${{ parameters.JSEngine }}'
18 changes: 10 additions & 8 deletions .github/jobs/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ parameters:
CC: ''
CXX: ''
JSEngine: ''
enableSanitizers: false

jobs:
- job: ${{ parameters.name }}
Expand All @@ -12,6 +13,7 @@ jobs:
vmImage: ${{ parameters.vmImage }}

variables:
SANITIZER_FLAG: ${{ coalesce(replace(format('{0}', parameters.enableSanitizers), 'True', 'ON'), 'OFF') }}
CC: ${{ parameters.CC }}
CXX: ${{ parameters.CXX }}

Expand All @@ -22,17 +24,22 @@ jobs:

- script: |
sudo apt-get update
sudo apt-get install libjavascriptcoregtk-4.1-dev libgl1-mesa-dev libcurl4-openssl-dev libwayland-dev
sudo apt-get install libjavascriptcoregtk-4.1-dev libgl1-mesa-dev libcurl4-openssl-dev libwayland-dev clang
displayName: 'Install packages'
- script: |
cmake -G Ninja -B build -D JAVASCRIPTCORE_LIBRARY=/usr/lib/x86_64-linux-gnu/libjavascriptcoregtk-4.1.so -D NAPI_JAVASCRIPT_ENGINE=${{ parameters.JSEngine }} -D CMAKE_BUILD_TYPE=RelWithDebInfo -D BX_CONFIG_DEBUG=ON -D CMAKE_UNITY_BUILD=$(UNITY_BUILD) -D OpenGL_GL_PREFERENCE=GLVND -D BABYLON_DEBUG_TRACE=ON
cmake -G Ninja -B build -D JAVASCRIPTCORE_LIBRARY=/usr/lib/x86_64-linux-gnu/libjavascriptcoregtk-4.1.so -D NAPI_JAVASCRIPT_ENGINE=${{ parameters.JSEngine }} -D CMAKE_BUILD_TYPE=RelWithDebInfo -D BX_CONFIG_DEBUG=ON -D CMAKE_UNITY_BUILD=$(UNITY_BUILD) -D OpenGL_GL_PREFERENCE=GLVND -D BABYLON_DEBUG_TRACE=ON -D ENABLE_SANITIZERS=$(SANITIZER_FLAG) .
ninja -C build
displayName: 'Build X11'
- script: |
cd build/Apps/UnitTests
ASAN_OPTIONS=detect_leaks=1 LSAN_OPTIONS=suppressions=../../../.github/asan_suppress.txt xvfb-run ./UnitTests
displayName: 'Unit Tests'
- script: |
cd build/Apps/Playground
xvfb-run ./Playground app:///Scripts/validation_native.js
ASAN_OPTIONS=detect_leaks=1 LSAN_OPTIONS=suppressions=../../../.github/asan_suppress.txt xvfb-run ./Playground app:///Scripts/validation_native.js
displayName: 'Validation Tests'
- task: PublishBuildArtifacts@1
Expand All @@ -47,8 +54,3 @@ jobs:
pathtoPublish: 'build/Apps/Playground/Errors'
displayName: 'Publish Tests ${{ parameters.name }} Errors'
condition: failed()

- script: |
cd build/Apps/UnitTests
xvfb-run ./UnitTests
displayName: 'Unit Tests'
8 changes: 6 additions & 2 deletions .github/jobs/macos.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
parameters:
name: ''
vmImage: ''
enableSanitizers: false

jobs:
- job: ${{ parameters.name }}
timeoutInMinutes: 30
pool:
vmImage: ${{ parameters.vmImage }}


variables:
SANITIZER_FLAG: ${{ coalesce(replace(format('{0}', parameters.enableSanitizers), 'True', 'ON'), 'OFF') }}

steps:
- template: cmake.yml
parameters:
Expand All @@ -18,7 +22,7 @@ jobs:
displayName: 'Select XCode $(XCODE_VERSION)'
- script: |
cmake -G Xcode -B buildmacOS -D CMAKE_UNITY_BUILD=$(UNITY_BUILD) -D BABYLON_DEBUG_TRACE=ON
cmake -G Xcode -B buildmacOS -D CMAKE_UNITY_BUILD=$(UNITY_BUILD) -D BABYLON_DEBUG_TRACE=ON -D ENABLE_SANITIZERS=$(SANITIZER_FLAG)
displayName: 'Generate macOS solution'
- script: |
Expand Down
23 changes: 22 additions & 1 deletion .github/jobs/win32.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,17 @@ parameters:
- name: graphics_api
type: string
default: D3D11
- name: enableSanitizers
type: boolean
default: false

jobs:
- job: ${{ parameters.name }}
timeoutInMinutes: 60
pool:
vmImage: ${{ parameters.vmImage }}
variables:
SANITIZER_FLAG: ${{ coalesce(replace(format('{0}', parameters.enableSanitizers), 'True', 'ON'), 'OFF') }}
${{ if eq(parameters.napiType, 'jsi') }}:
napiSuffix: '_JSI'
jsEngineDefine: '-DNAPI_JAVASCRIPT_ENGINE=JSI'
Expand All @@ -40,7 +44,7 @@ jobs:

# BGFX_CONFIG_MAX_FRAME_BUFFERS is set so enough Framebuffers are available before V8 starts disposing unused ones
- script: |
cmake -G "Visual Studio 17 2022" -B build${{ variables.solutionName }} -A ${{ parameters.platform }} ${{ variables.jsEngineDefine }} -D BX_CONFIG_DEBUG=ON -D GRAPHICS_API=${{ parameters.graphics_api }} -D CMAKE_UNITY_BUILD=$(UNITY_BUILD) -D BGFX_CONFIG_MAX_FRAME_BUFFERS=256 -D BABYLON_DEBUG_TRACE=ON
cmake -G "Visual Studio 17 2022" -B build${{ variables.solutionName }} -A ${{ parameters.platform }} ${{ variables.jsEngineDefine }} -D BX_CONFIG_DEBUG=ON -D GRAPHICS_API=${{ parameters.graphics_api }} -D CMAKE_UNITY_BUILD=$(UNITY_BUILD) -D BGFX_CONFIG_MAX_FRAME_BUFFERS=256 -D BABYLON_DEBUG_TRACE=ON -D ENABLE_SANITIZERS=$(SANITIZER_FLAG)
displayName: 'Generate ${{ variables.solutionName }} solution'
- task: MSBuild@1
Expand All @@ -62,6 +66,23 @@ jobs:
displayName: 'Enable Crash Dumps'
- powershell: |
$vs = vswhere -latest -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath
$msvc = Get-ChildItem "$vs\VC\Tools\MSVC" | Sort-Object Name -Descending | Select-Object -First 1
$asan = "$($msvc.FullName)\bin\Hostx64\x64"
$destinations = @(
"build${{ variables.solutionName }}\Apps\Playground\RelWithDebInfo",
"build${{ variables.solutionName }}\Apps\UnitTests\RelWithDebInfo"
)
foreach ($dest in $destinations) {
Get-ChildItem "$asan\clang_rt.asan_*.dll" |
Copy-Item -Destination $dest
}
displayName: "Copy ASAN runtime DLLs"
condition: ${{ parameters.enableSanitizers }}
- script: |
cd build${{ variables.solutionName }}\Apps\Playground
cd RelWithDebInfo
Expand Down
1 change: 1 addition & 0 deletions Apps/Playground/Android/BabylonNative/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ def unity_build = "false"
if (project.hasProperty("UNITY_BUILD")) {
unity_build = project.property("UNITY_BUILD")
}

def arcore_libpath = "${buildDir}/arcore-native"

configurations { natives }
Expand Down
1 change: 1 addition & 0 deletions Apps/Playground/X11/App.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -296,5 +296,6 @@ int main(int _argc, const char* const* _argv)

XUnmapWindow(display, window);
XDestroyWindow(display, window);
XCloseDisplay(display);
return 0;
}
4 changes: 3 additions & 1 deletion Apps/UnitTests/X11/App.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,5 +53,7 @@ int main()
Babylon::DebugTrace::EnableDebugTrace(true);
Babylon::DebugTrace::SetTraceOutput([](const char* trace) { printf("%s\n", trace); fflush(stdout); });

return RunTests(config);
int ret = RunTests(config);
XCloseDisplay(display);
return ret;
}
Loading