Skip to content

index out of bounds in crates/cranelift/src/debug/transform/attr.rs #8884

Closed
@dicej

Description

@dicej

While working on dotnet/runtimelab#2614, which involved updating the NativeAOT-LLVM build of the .NET runtime to target WASIp2, I tried to debug the System.Net.Http.Functional.Tests assembly using GDB and Wasmtime. The -c Debug build of that assembly worked (i.e. I was able to run it, set breakpoints, get stack traces, etc.), but the -c Release build triggered an assertion failure in the DWARF processing code.

I tried to reproduce this with a simple "hello, world" CLI app, but wasn't able to.

Test Case

System.Net.Http.Functional.Tests.wasm.gz

Steps to Reproduce

  • gunzip System.Net.Http.Functional.Tests.wasm.gz
  • cargo install --git https://github.com/bytecodealliance/wasmtime --rev 9dff778c wasmtime-cli
  • RUST_BACKTRACE=1 wasmtime -S http -D debug-info -O opt-level=0 System.Net.Http.Functional.Tests.wasm

Expected Results

I expected Wasmtime to run the component without crashing.

Actual Results

thread 'main' panicked at crates/cranelift/src/debug/transform/attr.rs:119:59:
index out of bounds: the len is 1 but the index is 2
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_bounds_check
   3: wasmtime_cranelift::debug::transform::attr::clone_die_attributes
   4: wasmtime_cranelift::debug::transform::unit::clone_unit
   5: wasmtime_cranelift::debug::transform::transform_dwarf
   6: wasmtime_cranelift::debug::write_debuginfo::emit_dwarf
   7: <wasmtime_cranelift::compiler::Compiler as wasmtime_environ::compile::Compiler>::append_dwarf
   8: wasmtime::compile::FunctionIndices::link_and_append_code
   9: wasmtime::compile::build_component_artifacts
  10: core::ops::function::FnOnce::call_once
  11: wasmtime_cache::ModuleCacheEntry::get_data_raw
  12: wasmtime::compile::runtime::<impl wasmtime::compile::code_builder::CodeBuilder>::compile_component
  13: wasmtime_cli::common::RunCommon::load_module
  14: wasmtime_cli::commands::run::RunCommand::execute
  15: wasmtime::main

Versions and Environment

Wasmtime version or commit: 9dff778

Operating system: Ubuntu Linux 24.04

Architecture: ARM64 (Mac Mini M2 Pro)

Extra Info

It's possible that the .NET ILC compiler and/or LLVM are generating invalid DWARF, but if that's the case I would expect Wasmtime to report that gracefully rather than panic.

If it's helpful, I can provide instructions for building the attached Wasm file from source.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIncorrect behavior in the current implementation that needs fixing

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions