Skip to content

[regression from 6.0.2] LLVM crash when compiling OpenCV with Relaxed SIMD support #27356

Description

@DoDoENT

Please include the following in your bug report:

Version of emscripten/emsdk:

Emscripten 6.0.3 (bazel module)
clang version 23.0.0git (https:/github.com/llvm/llvm-project 592953beff733a1e28f6c6e5e39f948fb035a329)

Failing command line in full:

  • provided in clang stack dump below

Full link command and output with -v appended:
Linker step never reached - crash was at compiling imgwarp.cpp from OpenCV 5.0.0

Clang stack dump:

Stack dump:
0.	Program arguments: /Users/dodo/Library/Caches/bazel/_bazel_dodo/d37a55ce2ed2abf9c807bae8c8d24add/sandbox/darwin-sandbox/1516/execroot/_main/external/emsdk++emscripten_deps+emscripten_bin_mac_arm64/bin/clang -target wasm32-unknown-emscripten -mllvm -combiner-glo     bal-alias-analysis=false -mllvm -enable-emscripten-cxx-exceptions -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=external/emsdk++emscripten_cache+emscripten_cache/cache/sysroot --sysroot=external/emsdk++emscripten_deps+emscripten_bin_mac_arm64/emscripten/cache/sysroot -fdiagnostics-color -fexceptions -fno-strict-aliasing -funsigned-char -no-canonical-prefixes -std=gnu++17 -nostdinc -nostdinc++ -msimd128 -msimd128 -mrelaxed-simd -fomit-frame-pointer -O0 -Wall -DCV_WASM_SIMD=1 -iquote external/opencv+ -iquote bazel-out/wasm-fastbuild-ST-90580fbd11dc/bin/external/opencv+ -iquote external/zlib+ -iquote bazel-out/wasm-fastbuild-ST-90580fbd11dc/bin/external/zlib+ -Ibazel-out/wasm-fastbuild-ST-90580fbd11dc/bin/external/opencv+/_virtual_includes/imgproc -Ibazel-out/wasm-fastbuild-ST-90580fbd11dc/bin/external/opencv+/_virtual_includes/core -Iexternal/zlib+/zlib/include -Ibazel-out/wasm-fastbuild-ST-90580fbd11dc/bin/external/zlib+/zlib/include -Iexternal/opencv+/opencv2 -Ibazel-out/wasm-fastbuild-ST-90580fbd11dc/bin/external/opencv+/opencv2 -Iexternal/opencv+/private -Ibazel-out/wasm-fastbuild-ST-90580fbd11dc/bin/external/opencv+/private -Iexternal/opencv+/include -Ibazel-out/wasm-fastbuild-ST-90580fbd11dc/bin/external/opencv+/include -Ibazel-out/wasm-fastbuild-ST-90580fbd11dc/bin/external/opencv+/_virtual_includes/geometry -Ibazel-out/wasm-fastbuild-ST-90580fbd11dc/bin/external/opencv+/_virtual_includes/flann -Ibazel-out/wasm-fastbuild-ST-90580fbd11dc/bin/external/opencv+/_virtual_includes/imgproc_generated_simd_headers -Ibazel-out/wasm-fastbuild-ST-90580fbd11dc/bin/external/opencv+/_virtual_includes/imgproc_generated_headers -g -fvisibility=hidden -fvisibility-inlines-hidden -D_USE_MATH_DEFINES -D__OPENCV_BUILD=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Os -Wno-deprecated-enum-float-conversion -Wno-deprecated-volatile -w -iwithsysroot/include/c++/v1 -iwithsysroot/include/compat -iwithsysroot/include -isystem external/emsdk++emscripten_deps+emscripten_bin_mac_arm64/lib/clang/23/include -MD -MF bazel-out/wasm-fastbuild-ST-90580fbd11dc/bin/external/opencv+/_objs/imgproc/imgwarp.d -c external/opencv+/modules/imgproc/src/imgwarp.cpp -obazel-out/wasm-fastbuild-ST-90580fbd11dc/bin/external/opencv+/_objs/imgproc/imgwarp.o -Wno-builtin-macro-redefined -D__DATE__=\"redacted\" -D__TIMESTAMP__=\"redacted\" -D__TIME__=\"redacted\"
1.	<eof> parser at end of file
2.	Code generation
3.	Running pass 'Function Pass Manager' on module 'external/opencv+/modules/imgproc/src/imgwarp.cpp'.
4.	Running pass 'WebAssembly Instruction Selection' on function '@_ZN2cv3hal26warpPerspectiveBlocklineNNEPKdPsdddi'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  clang-23                 0x0000000105c93678 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  clang-23                 0x0000000105c905dc llvm::sys::RunSignalHandlers() + 164
2  clang-23                 0x0000000105c92530 llvm::sys::CleanupOnSignal(unsigned long) + 272
3  clang-23                 0x0000000105bf62d4 CrashRecoverySignalHandler(int) (.llvm.5902021482545374146) + 148
4  libsystem_platform.dylib 0x000000018688b744 _sigtramp + 56
5  clang-23                 0x0000000104e31ae0 (anonymous namespace)::WebAssemblyDAGToDAGISel::CheckNodePredicate(llvm::SDValue, unsigned int) const (.llvm.13550879245612956240) + 168
6  clang-23                 0x0000000104e31ae0 (anonymous namespace)::WebAssemblyDAGToDAGISel::CheckNodePredicate(llvm::SDValue, unsigned int) const (.llvm.13550879245612956240) + 168
7  clang-23                 0x0000000107774ca4 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int, unsigned char const*) + 5604
8  clang-23                 0x0000000104e30efc (anonymous namespace)::WebAssemblyDAGToDAGISel::Select(llvm::SDNode*) (.llvm.13550879245612956240) + 1916
9  clang-23                 0x000000010776e300 llvm::SelectionDAGISel::DoInstructionSelection() + 316
10 clang-23                 0x000000010776d80c llvm::SelectionDAGISel::CodeGenAndEmitDAG() + 1900
11 clang-23                 0x000000010776c748 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) + 6684
12 clang-23                 0x000000010776a050 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) + 348
13 clang-23                 0x0000000107767bd8 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) + 208
14 clang-23                 0x000000010521a67c llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 500
15 clang-23                 0x0000000105740148 llvm::FPPassManager::runOnFunction(llvm::Function&) + 1300
16 clang-23                 0x00000001057475d4 llvm::FPPassManager::runOnModule(llvm::Module&) + 52
17 clang-23                 0x0000000105740d80 llvm::legacy::PassManagerImpl::run(llvm::Module&) + 1896
18 clang-23                 0x000000010665ea00 (anonymous namespace)::EmitAssemblyHelper::TimeCodegenPasses(llvm::function_ref<void ()>) + 548
19 clang-23                 0x000000010664f9b0 clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::__2::unique_ptr<llvm::raw_pwrite_stream, std::__2::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) + 6512
20 clang-23                 0x0000000106481b00 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) + 3364
21 clang-23                 0x00000001079c0794 clang::ParseAST(clang::Sema&, bool, bool) + 816
22 clang-23                 0x0000000106a568a8 clang::FrontendAction::Execute() + 44
23 clang-23                 0x00000001069d5a20 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 1504
24 clang-23                 0x0000000106b1fb7c clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1216
25 clang-23                 0x0000000104a76088 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 2016
26 clang-23                 0x0000000104a74328 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>) + 1188
27 clang-23                 0x0000000104a757e8 int llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::callback_fn<clang_main(int, char**, llvm::ToolContext const&)::$_0>(long, llvm::SmallVectorImpl<char const*>&) + 60
28 clang-23                 0x000000010682f28c void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__2::optional<llvm::StringRef>>, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char>>*, bool*) const::$_0>(long) + 32
29 clang-23                 0x0000000105bf5fc8 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) + 144
30 clang-23                 0x000000010682e978 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__2::optional<llvm::StringRef>>, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char>>*, bool*) const + 368
31 clang-23                 0x00000001067ea404 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const + 652
32 clang-23                 0x00000001067eaa48 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::__2::pair<int, clang::driver::Command const*>>&, bool) const + 1352
33 clang-23                 0x000000010680e580 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::__2::pair<int, clang::driver::Command const*>>&) + 400
34 clang-23                 0x0000000104a73138 clang_main(int, char**, llvm::ToolContext const&) + 5560
35 clang-23                 0x0000000104a81af0 main + 100
36 dyld                     0x00000001864c3e00 start + 6992
clang: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 23.0.0git (https:/github.com/llvm/llvm-project 592953beff733a1e28f6c6e5e39f948fb035a329)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/dodo/Library/Caches/bazel/_bazel_dodo/d37a55ce2ed2abf9c807bae8c8d24add/sandbox/darwin-sandbox/1516/execroot/_main/external/emsdk++emscripten_deps+emscripten_bin_mac_arm64/bin
clang: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
clang: note: diagnostic msg: /var/folders/w1/67dfjvfs6sd66rd33brg4d5r0000gn/T/imgwarp-363c9d.cpp
clang: note: diagnostic msg: /var/folders/w1/67dfjvfs6sd66rd33brg4d5r0000gn/T/imgwarp-363c9d.sh
clang: note: diagnostic msg: Crash backtrace is located in
clang: note: diagnostic msg: /Users/dodo/Library/Logs/DiagnosticReports/clang_<YYYY-MM-DD-HHMMSS>_<hostname>.crash
clang: note: diagnostic msg: (choose the .crash file that corresponds to your crash)
clang: note: diagnostic msg:

********************

reproducer.tar.gz

Offending source file (for reference): https://github.com/opencv/opencv/blob/5.0.0/modules/imgproc/src/imgwarp.cpp

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions