Assertion failure `it != implicitTypes.end()` in wasm::WATParser::ParseModuleTypesCtx::makeTypeUse at contexts.h:1474 (main branch @3ef8d19)

Open
#8,634 0 comments 0 reactions 1 assignee View on GitHub

@tlively is already working on this.

Since Apr 21, 2026.

Assessment

This issue has not been assessed yet.

Description

Summary

An assertion failure is triggered in wasm::WATParser::ParseModuleTypesCtx::makeTypeUse() when parsing malformed WebAssembly input with wasm-emscripten-finalize.
The assertion it != implicitTypes.end() fails when looking up an expected implicit type.

Affected Version

  • Branch: main
  • Commit: 3ef8d19 (2026-04-21 latest)
  • Tool: wasm-emscripten-finalize
  • Build type: Debug + AddressSanitizer

Reproduction

mkdir build && cd build

cmake \
  -DCMAKE_C_COMPILER=/home/AFLplusplus/afl-clang-fast \
  -DCMAKE_CXX_COMPILER=/home/AFLplusplus/afl-clang-fast++ \
  -DCMAKE_C_FLAGS="-O0 -g -fno-omit-frame-pointer -fsanitize=address -Wno-error" \
  -DCMAKE_CXX_FLAGS="-std=c++20 -O0 -g -fno-omit-frame-pointer -fsanitize=address -Wno-bitwise-instead-of-logical -Wno-ambiguous-reversed-operator -Wno-error" \
  -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=address -no-pie -pthread -ldl -lm" \
  -DCMAKE_BUILD_TYPE=Debug \
  -DBUILD_TESTS=OFF \
  -DBUILD_TOOLS=ON \
  -DENABLE_BYESAN=OFF \
  ..

make -j$(nproc)

./wasm-emscripten-finalize -n poc

Error Log

wasm-emscripten-finalize: /home/new-cases/binaryen/latestest-04.21/binaryen-main/src/parser/contexts.h:1474: Result<wasm::WATParser::ParseModuleTypesCtx::TypeUseT> wasm::WATParser::ParseModuleTypesCtx::makeTypeUse(wasm::Index, std::optional<HeapTypeT>, wasm::WATParser::TypeParserCtx<wasm::WATParser::ParseModuleTypesCtx>::ParamsT *, wasm::WATParser::TypeParserCtx<wasm::WATParser::ParseModuleTypesCtx>::ResultsT *): Assertion `it != implicitTypes.end()' failed.

Root Cause

The method makeTypeUse() at contexts.h:1474 expects to find a type entry in implicitTypes,
but the input causes a lookup of a non-existent type, leading to an assertion failure.

Call chain:

wasm-emscripten-finalize parsing → ParseModuleTypesCtx::makeTypeUse() → Assertion it != implicitTypes.end() failed

PoC

PoC

Dominant language
WebAssembly
Stars
8.6k
Forks
885
Avg merge
1d 20h
Merged PRs (30d)
64

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from WebAssembly/binaryen

All issues in WebAssembly/binaryen

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.