Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Exception Reference Global Panics Coredump Serialization

Đang mở Phù hợp với người mới
#14,102 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
76/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Ít trao đổi
Công nghệ
rust, wasm
Lĩnh vực
backend

Hướng nghiên cứu

Bắt đầu tại crates/wasmtime/src/runtime/coredump.rs, ở WasmCoreDump::_serialize và match của reference-type xung quanh panic đã được báo cáo. Chạy reproducer exnref-coredump.wat được cung cấp bằng lệnh wasmtime đã bật coredump, sau đó xác minh rằng một global exnref không còn đi tới unreachable!() và guest trap không gây ra host panic.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug wasm-proposal:exceptions wasmtime:debugging

Summary

When WebAssembly coredump capture is enabled, an untrusted module containing a valid exnref global can turn an ordinary guest trap into a Rust panic in the host. Coredump serialization assumes every reference type belongs to the external, function, or anyref families; the exception-reference family reaches an unreachable!() arm instead of being encoded or rejected.

Detail

After the guest traps, WasmCoreDump::_serialize recreates module globals in the core dump. For reference-valued globals it calls r.heap_type().top() and handles only Extern, Func, and Any:

ValType::Ref(r) => match r.heap_type().top() {
    HeapType::Extern => wasm_encoder::ValType::EXTERNREF,
    HeapType::Func => wasm_encoder::ValType::FUNCREF,
    HeapType::Any => wasm_encoder::ValType::Ref(wasm_encoder::RefType::ANYREF),
    ty => unreachable!("not a top type: {ty:?}"),
},

The exception-reference top type is Exn, so a mutable exnref global reaches the final arm. The reproducer enables the existing coredump option and invokes an exported function containing unreachable; no harness or source change is involved.

Reproduce

set -eu
git clone --depth 1 https://github.com/bytecodealliance/wasmtime.git
cd wasmtime
git rev-parse HEAD

cargo build --bin wasmtime --no-default-features \
  --features 'run,wat,cranelift,compile,coredump,clap/default,clap/wrap_help'

cat > exnref-coredump.wat <<'WAT'
(module
  (global (export "g") (mut exnref) (ref.null exn))
  (func (export "trap")
    unreachable))
WAT

set +e
RUST_BACKTRACE=0 ./target/debug/wasmtime run -D coredump=guest.dump \
  --invoke trap exnref-coredump.wat
status=$?
set -e
printf 'exit=%s\n' "$status"

Observed output on the affected HEAD:

3ebfbe5af4927c157d6fcaca42b8dbb6d17b73fb

thread 'main' (...) panicked at crates/wasmtime/src/runtime/coredump.rs:194:31:
internal error: entered unreachable code: not a top type: Exn
exit=101
Ngôn ngữ chính
Rust
Star
18.7k
Fork
1.8k
Merge trung bình
1 ngày 7 giờ
Pull request đã merge (30 ngày)
140

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của bytecodealliance/wasmtime

Tất cả issue của bytecodealliance/wasmtime

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.