Skip to content
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
e1150fb
Address sanitizer
CedricGuillemet Oct 29, 2025
a569011
template parameter
CedricGuillemet Oct 29, 2025
f0308c8
default values
CedricGuillemet Oct 29, 2025
41d85d3
JNI sanitizer
CedricGuillemet Oct 29, 2025
7ef0e14
android image with asan
CedricGuillemet Oct 29, 2025
657a9ee
ASAN from android ndk
CedricGuillemet Nov 4, 2025
5a23a08
macos13
CedricGuillemet Nov 4, 2025
fddf441
up android extensions
CedricGuillemet Nov 4, 2025
6e9c40d
implicit instantiation of undefined template
CedricGuillemet Nov 4, 2025
e552838
casting u16
CedricGuillemet Nov 4, 2025
032df9e
macos14
CedricGuillemet Nov 4, 2025
f27f623
up ios simulator
CedricGuillemet Nov 4, 2025
7abc893
PR feedback
CedricGuillemet Nov 5, 2025
dda689a
mangled names
CedricGuillemet Nov 5, 2025
eda3414
syntax
CedricGuillemet Nov 5, 2025
f0594ca
copy/paste
CedricGuillemet Nov 5, 2025
ced60d1
typo
CedricGuillemet Nov 5, 2025
1979429
more on name demangle
CedricGuillemet Nov 5, 2025
871fbd8
namespace test
CedricGuillemet Nov 5, 2025
1738f3b
yet another namespace test
CedricGuillemet Nov 5, 2025
14afcdc
once more
CedricGuillemet Nov 5, 2025
8f53e65
recursive call
CedricGuillemet Nov 5, 2025
49e7870
revert namespace tweaks
CedricGuillemet Nov 6, 2025
f1d3e31
Merge branch 'main' of https://github.com/BabylonJS/JsRuntimeHost int…
CedricGuillemet Nov 6, 2025
f1cba24
use clang for sanitizer
CedricGuillemet Nov 6, 2025
1f56b79
sanitizer
CedricGuillemet Nov 6, 2025
fc90f72
kick build
CedricGuillemet Nov 7, 2025
14d1a39
something is wrong with jsc
CedricGuillemet Nov 7, 2025
3faa15d
casting maybe?
CedricGuillemet Nov 7, 2025
3ea8de8
false positive
CedricGuillemet Nov 7, 2025
a2d6080
yet another test
CedricGuillemet Nov 7, 2025
32f147e
disable asan
CedricGuillemet Nov 7, 2025
23d57b6
fix template attribute
CedricGuillemet Nov 7, 2025
12d5cf9
check finite
CedricGuillemet Nov 7, 2025
1cd2e93
Merge branch 'main' of https://github.com/BabylonJS/JsRuntimeHost int…
CedricGuillemet Nov 12, 2025
0ae084d
androidextension update
CedricGuillemet Nov 12, 2025
a916c44
CC/CXX
CedricGuillemet Nov 13, 2025
6959d4c
removed android cmake sanitizer settings
CedricGuillemet Nov 13, 2025
20f1cbd
BN addition comment
CedricGuillemet Nov 13, 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
22 changes: 18 additions & 4 deletions .github/azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ schedules:

variables:
- name: ndkVersion
value: 25.2.9519653
value: 28.2.13676358

jobs:
# WIN32
Expand Down Expand Up @@ -85,6 +85,13 @@ jobs:
vmImage: 'macOS-latest'
xCodeVersion: 16.4

- template: jobs/macos.yml
parameters:
name: 'macOS_Xcode164_Sanitizers'
vmImage: 'macOS-latest'
xCodeVersion: 16.4
Sanitizers: true

# iOS
- template: jobs/ios.yml
parameters:
Expand All @@ -96,9 +103,16 @@ jobs:
- template: jobs/ios.yml
parameters:
name: 'iOS_Xcode152'
vmImage: 'macOS-13'
vmImage: 'macOS-14'
xCodeVersion: 15.2
simulator: 'iPhone 14'
simulator: 'iPhone 15'

# Linux
- template: jobs/linux.yml
- template: jobs/linux.yml
parameters:
name: Ubuntu

- template: jobs/linux.yml
parameters:
name: Ubuntu_Sanitizers
Sanitizers: true
4 changes: 3 additions & 1 deletion .github/jobs/android.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
parameters:
- name: name
type: string
default: ''
- name: jsEngine
type: string
default: ''

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

pool:
vmImage: macos-13
vmImage: macos-14

steps:
- script: |
Expand Down
11 changes: 9 additions & 2 deletions .github/jobs/linux.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,24 @@
parameters:
name: ''
Sanitizers: false

jobs:
- job: ubuntu
- job: ${{parameters.name}}
timeoutInMinutes: 15

pool:
vmImage: ubuntu-latest

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

steps:
- script: |
sudo apt-get update
sudo apt-get install libjavascriptcoregtk-4.1-dev libcurl4-openssl-dev ninja-build
displayName: 'Install packages'
- script: cmake -B Build/ubuntu -GNinja -D CMAKE_BUILD_TYPE=RelWithDebInfo
- script: cmake -B Build/ubuntu -GNinja -D CMAKE_BUILD_TYPE=RelWithDebInfo -D ENABLE_SANITIZERS=$(SANITIZER_FLAG)
displayName: 'Configure CMake'

- script: |
Expand Down
6 changes: 5 additions & 1 deletion .github/jobs/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ parameters:
name: ''
vmImage: ''
xCodeVersion: ''
Sanitizers: false

jobs:
- job: ${{parameters.name}}
Expand All @@ -10,13 +11,16 @@ jobs:
pool:
vmImage: ${{parameters.vmImage}}

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

steps:
- script: |
sudo xcode-select --switch /Applications/Xcode_${{parameters.xCodeVersion}}.app/Contents/Developer
displayName: 'Select Xcode ${{parameters.xCodeVersion}}'

- script: |
cmake -B Build/macOS -GXcode
cmake -B Build/macOS -GXcode -D ENABLE_SANITIZERS=$(SANITIZER_FLAG)
displayName: 'Configure CMake'

- task: Xcode@5
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ FetchContent_Declare(arcana.cpp
GIT_TAG 1a8a5d6e95413ed14b38a6ac9419048f9a9c8009)
FetchContent_Declare(AndroidExtensions
GIT_REPOSITORY https://github.com/bghgary/AndroidExtensions.git
GIT_TAG 7d88a601fda9892791e7b4e994e375e049615688)
GIT_TAG 24370fff52a03ef43dcf5e5fcb8b84338b779a05)
FetchContent_Declare(asio
GIT_REPOSITORY https://github.com/chriskohlhoff/asio.git
GIT_TAG f693a3eb7fe72a5f19b975289afc4f437d373d9c)
Expand Down
6 changes: 3 additions & 3 deletions Core/AppRuntime/V8Inspector/Source/V8InspectorAgent.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -426,10 +426,10 @@ namespace Babylon
}
v8::Local<v8::String> string_value = v8::Local<v8::String>::Cast(value);
int len = string_value->Length();
std::basic_string<uint16_t> buffer(len, '\0');
string_value->Write(v8::Isolate::GetCurrent(), &buffer[0], 0, len);
std::basic_string<char16_t> buffer(len, '\0');
string_value->Write(v8::Isolate::GetCurrent(), (uint16_t *)&buffer[0], 0, len); // Write expects uint16_t* but the template parameter is char16_t
return v8_inspector::StringBuffer::create(
v8_inspector::StringView(buffer.data(), len));
v8_inspector::StringView((uint16_t *)buffer.data(), len));
}

bool AgentImpl::AppendMessage(
Expand Down
8 changes: 7 additions & 1 deletion Core/Node-API/Source/js_native_api_javascriptcore.cc
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@ struct napi_callback_info__ {
uint16_t argc;
};

static size_t jschar_length(const JSChar* str) {
size_t len = 0;
while (str[len] != 0) { ++len; }
return len;
}

namespace {
class JSString {
public:
Expand All @@ -33,7 +39,7 @@ namespace {
}

JSString(const JSChar* string, size_t length = NAPI_AUTO_LENGTH)
: _string{JSStringCreateWithCharacters(string, length == NAPI_AUTO_LENGTH ? std::char_traits<JSChar>::length(string) : length)} {
: _string{JSStringCreateWithCharacters(string, length == NAPI_AUTO_LENGTH ? jschar_length(string) : length)} {
}

~JSString() {
Expand Down
6 changes: 6 additions & 0 deletions Tests/UnitTests/Android/app/src/main/cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)

project(UnitTestsJNI)

if(ENABLE_SANITIZERS)
set(SANITIZERS "address,undefined")
add_compile_options(-fsanitize=${SANITIZERS} -fno-omit-frame-pointer)
add_link_options(-fsanitize=${SANITIZERS})
endif()

get_filename_component(UNIT_TESTS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../../.." ABSOLUTE)
get_filename_component(TESTS_DIR "${UNIT_TESTS_DIR}/.." ABSOLUTE)
get_filename_component(REPO_ROOT_DIR "${TESTS_DIR}/.." ABSOLUTE)
Expand Down
14 changes: 14 additions & 0 deletions Tests/UnitTests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,20 @@ elseif(UNIX AND NOT ANDROID)
Linux/App.cpp)
endif()

# Sanitizers
option(ENABLE_SANITIZERS "Enable AddressSanitizer and UBSan" OFF)

if(ENABLE_SANITIZERS)
set(ENABLE_RTTI ON CACHE BOOL "" FORCE)
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
set(SANITIZERS "address,undefined")
add_compile_options(-fsanitize=${SANITIZERS} -fno-omit-frame-pointer)
add_link_options(-fsanitize=${SANITIZERS})
else()
message(WARNING "Sanitizers not supported on this compiler.")
endif()
endif()

add_executable(UnitTests ${SOURCES} ${SCRIPTS} ${TYPE_SCRIPTS})
target_compile_definitions(UnitTests PRIVATE JSRUNTIMEHOST_PLATFORM="${JSRUNTIMEHOST_PLATFORM}")

Expand Down
Loading