oneTBB icon indicating copy to clipboard operation
oneTBB copied to clipboard

WASM + Debug

Open Nekto89 opened this issue 1 month ago • 5 comments

Hi,

Should oneTBB tests pass in Debug configuration on WASM? I've tried using latest emsdk docker container on latest master and followed instructions from https://github.com/oneapi-src/oneTBB/blob/master/WASM_Support.md

docker run --rm -v %CD%:/usr/src -it emscripten/emsdk /bin/bash
Inside container:
emcmake cmake -DCMAKE_CXX_COMPILER=em++ -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=emcc -DTBB_STRICT=OFF -DCMAKE_CXX_FLAGS=-Wno-unused-command-line-argument -DTBB_DISABLE_HWLOC_AUTOMATIC_SEARCH=ON -DBUILD_SHARED_LIBS=ON -DTBB_EXAMPLES=ON -DTBB_TEST=ON -B build -S /usr/src/oneTBB-master
cd build
cmake --build . -j
cmake --build .
ctest --output-on-failure

In Release everything works fine. In Debug I'm getting lots of errors. I didn't check all of them, but from scrolling I see this assertion in each test:

3/122 Test   #3: test_arena_priorities ....................***Failed    0.08 sec
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
Assertion base > stack_size / 2 failed (located in the calculate_stealing_threshold function, line in file: 565)
Detailed description: Stack anchor calculation overflow
Aborted(native code called abort())
/src/build/clang_19.0_cxx11_32_debug/test_arena_priorities.js:143
      throw ex;
      ^

RuntimeError: Aborted(native code called abort())
    at abort (/src/build/clang_19.0_cxx11_32_debug/test_arena_priorities.js:692:41)
    at __abort_js (/src/build/clang_19.0_cxx11_32_debug/test_arena_priorities.js:4372:3)
    at test_arena_priorities.wasm.abort (wasm://wasm/test_arena_priorities.wasm-026427d6:wasm-function[5250]:0x1367b0)
    at test_arena_priorities.wasm.tbb::detail::r1::assertion_failure_impl(char const*, int, char const*, char const*) (wasm://wasm/test_arena_priorities.wasm-026427d6:wasm-function[4326]:0xfa172)
    at test_arena_priorities.wasm.tbb::detail::r1::assertion_failure(char const*, int, char const*, char const*)::$_0::operator()() const (wasm://wasm/test_arena_priorities.wasm-026427d6:wasm-function[4325]:0xfa033)
    at test_arena_priorities.wasm.void tbb::detail::d0::run_initializer<tbb::detail::r1::assertion_failure(char const*, int, char const*, char const*)::$_0>(tbb::detail::r1::assertion_failure(char const*, int, char const*, char const*)::$_0 const&, std::__2::atomic<tbb::detail::d0::do_once_state>&) (wasm://wasm/test_arena_priorities.wasm-026427d6:wasm-function[4316]:0xf9c03)
    at test_arena_priorities.wasm.void tbb::detail::d0::atomic_do_once<tbb::detail::r1::assertion_failure(char const*, int, char const*, char const*)::$_0>(tbb::detail::r1::assertion_failure(char const*, int, char const*, char const*)::$_0 const&, std::__2::atomic<tbb::detail::d0::do_once_state>&) (wasm://wasm/test_arena_priorities.wasm-026427d6:wasm-function[4315]:0xf9b8f)
    at test_arena_priorities.wasm.tbb::detail::r1::assertion_failure(char const*, int, char const*, char const*) (wasm://wasm/test_arena_priorities.wasm-026427d6:wasm-function[4314]:0xf9a74)
    at test_arena_priorities.wasm.tbb::detail::r1::calculate_stealing_threshold(unsigned long, unsigned long) (wasm://wasm/test_arena_priorities.wasm-026427d6:wasm-function[3175]:0xa81df)
    at test_arena_priorities.wasm.tbb::detail::r1::governor::init_external_thread() (wasm://wasm/test_arena_priorities.wasm-026427d6:wasm-function[3870]:0xd5e95)

Node.js v18.20.3

Am I doing something wrong? Do I need to use some older version?

Nekto89 avatar Jun 23 '24 13:06 Nekto89