Skip to content

The checked-in CoreCLR WebAssembly call helpers in src/coreclr/vm/wasm/wasi/ are out of date. #136543

Closed

Description

@MihaZupan

Build Information

Build: https://dev.azure.com/dnceng-public/cbb18261-c48f-4abb-8651-8cdcb5474649/_build/results?buildId=1651055&view=logs&j=149f271a-62bf-57d4-9e9a-9c7efca8df5b
Build error leg or test failing: Build / wasi-wasm linux Release CoreCLR_BuildOnly / Check wasi CoreCLR call helpers are up to date
Pull request: #136519

Error Message

DO NOT USE JSON BELOW IF THIS IS A BUILD BREAK otherwise build analysis will allow pull requests to merge that break the build worse. For a build break, do not use this issue form. Make a regular new issue.

Fill the error message using step by step known issues guidance.

{
  "ErrorMessage": "The checked-in CoreCLR WebAssembly call helpers in src/coreclr/vm/wasm/wasi/ are out of date.",
  "ErrorPattern": "",
  "BuildRetry": false,
  "ExcludeConsoleLog": false
}

Known issue validation

Build: 🔎 https://dev.azure.com/dnceng-public/public/_build/results?buildId=1651055
Error message validated: [The checked-in CoreCLR WebAssembly call helpers in src/coreclr/vm/wasm/wasi/ are out of date.]
Result validation: ✅ Known issue matched with the provided build.
Validation performed at: 10/27/2026 9:19:40 PM UTC

Activity

  1. added
    blocking-clean-ciBlocking PR or rolling runs of 'runtime' or 'runtime-extra-platforms'
    Known Build ErrorUse this to report build issues in the .NET Helix tab
    on Oct 27, 2026
  2. MihaZupan commented on Oct 27, 2026

    @MihaZupan
    MemberAuthor
    ##[error]The checked-in CoreCLR WebAssembly call helpers in src/coreclr/vm/wasm/wasi/ are out of date. Regenerate them and commit the result; see the step log for the diff and the commands.
     M src/coreclr/vm/wasm/wasi/callhelpers-pinvoke.cpp
    diff --git a/src/coreclr/vm/wasm/wasi/callhelpers-pinvoke.cpp b/src/coreclr/vm/wasm/wasi/callhelpers-pinvoke.cpp
    index 47edb935..01ad7600 100644
    --- a/src/coreclr/vm/wasm/wasi/callhelpers-pinvoke.cpp
    +++ b/src/coreclr/vm/wasm/wasi/callhelpers-pinvoke.cpp
    @@ -16,6 +16,7 @@ extern "C" {
         int32_t BrotliDecoderDecompressStream (void *, void *, void *, void *, void *, void *);
         void BrotliDecoderDestroyInstance (void *);
         int32_t BrotliDecoderIsFinished (void *);
    +    int32_t BrotliDecoderSetParameter (void *, int32_t, uint32_t);
         int32_t BrotliEncoderCompress (int32_t, int32_t, int32_t, void *, void *, void *, void *);
         int32_t BrotliEncoderCompressStream (void *, int32_t, void *, void *, void *, void *, void *);
         void * BrotliEncoderCreateInstance (void *, void *, void *);
    @@ -336,6 +337,7 @@ static const Entry s_libSystem_IO_Compression_Native [] = {
         DllImportEntry(BrotliDecoderDecompressStream) // System.IO.Compression.Brotli
         DllImportEntry(BrotliDecoderDestroyInstance) // System.IO.Compression.Brotli
         DllImportEntry(BrotliDecoderIsFinished) // System.IO.Compression.Brotli
    +    DllImportEntry(BrotliDecoderSetParameter) // System.IO.Compression.Brotli
         DllImportEntry(BrotliEncoderCompress) // System.IO.Compression.Brotli
         DllImportEntry(BrotliEncoderCompressStream) // System.IO.Compression.Brotli
         DllImportEntry(BrotliEncoderCreateInstance) // System.IO.Compression.Brotli
    @@ -602,7 +604,7 @@ typedef struct PInvokeTable {
     
     static PInvokeTable s_PInvokeTables[] = {
         {"libSystem.Globalization.Native", s_libSystem_Globalization_Native, 34},
    -    {"libSystem.IO.Compression.Native", s_libSystem_IO_Compression_Native, 51},
    +    {"libSystem.IO.Compression.Native", s_libSystem_IO_Compression_Native, 52},
         {"libSystem.Native", s_libSystem_Native, 147},
         {"wasi:clocks/monotonic-clock@0.2.8", s_wasi_3A_clocks_2F_monotonic_clock_40_0_2_8, 4},
         {"wasi:http/outgoing-handler@0.2.8", s_wasi_3A_http_2F_outgoing_handler_40_0_2_8, 1},
    
    The managed code that feeds these tables ([UnmanagedCallersOnly] methods, P/Invokes, QCalls)
    changed without the tables being regenerated. To fix, run from the repository root:
    
      ./build.sh clr+libs -os wasi -c Release
      src/coreclr/vm/wasm/generate-coreclr-helpers.sh -c Release --target-os wasi
    
    and commit the changes under src/coreclr/vm/wasm/wasi/.
    
  3. dotnet-policy-service commented on Oct 27, 2026

    @dotnet-policy-service
    Contributor

    Tagging subscribers to this area: @agocke
    See info in area-owners.md if you want to be subscribed.

  4. lewing commented on Oct 27, 2026

    @lewing
    Member

    This is already fixed on main, so no regeneration PR is needed.

    The three hunks in the CI diff (the BrotliDecoderSetParameter declaration, its DllImportEntry, and the libSystem.IO.Compression.Native table count 51 -> 52) are all present in src/coreclr/vm/wasm/wasi/callhelpers-pinvoke.cpp on current main (152ad965267). They arrived in #135903 (2026-10-27 18:32Z), which regenerated the tables as part of an unrelated change.

    Why the check failed on #136519: its base (f6b68e03fc, 15:28Z) predates #135903, so the tables it was tested against were still stale.

    How the tables got stale:

    This is a semantic merge race between those two PRs rather than a missed step in either one. I only compared the three hunks against main; I did not regenerate the tables locally.

    Note

    This comment was drafted with GitHub Copilot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Known Build ErrorUse this to report build issues in the .NET Helix tabarea-VM-coreclrblocking-clean-ciBlocking PR or rolling runs of 'runtime' or 'runtime-extra-platforms'

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions