Skip to content

x86 validation: bad allocation before extracting ~614 MiB portable ZIPs (1.29.280) #6632

Open

Description

@cpunion

Relevant area(s)

WinGet CLI

Relevant command(s)

winget install

Brief description of your issue

WinGet 1.29.280 exits with Caught std::exception: bad allocation / 0x8a150003 while validating two approximately 614 MiB portable ZIP installers on the x86 validation worker. Both failures occur after download, SHA256 verification, and successful IAttachmentExecute::Save(), before any archive-extraction log entry or application execution.

Affected submissions:

The evidence below comes from the public validation service artifacts, not a separate local Windows reproduction. The logs do not contain a native stack trace, so the exact allocation site is unconfirmed.

Steps to reproduce

Use the x86 installer entry from either linked PR on a Windows x86 worker with WinGet 1.29.280. The validation service enabled LocalManifestFiles and LocalArchiveMalwareScanOverride, then ran:

winget install --manifest C:\Users\Validator\AppData\Local\Temp\Manifest.yaml --installer-type zip --accept-package-agreements --skip-dependencies --ignore-local-archive-malware-scan

Both manifests use InstallerType: zip, NestedInstallerType: portable, and NestedInstallerFiles: [{ RelativeFilePath: bin/llgo.exe, PortableCommandAlias: llgo }].

Archive Bytes SHA256
MSVC x86 643991933 358a6b9bec7cf8658c2c189dc3523f63c0a81de8faf849a543250f9b9b7e7c90
MinGW x86 643991935 45f0eb449256505dae1840c54656b1ab862ea9eee234ef953d972707c30845a2

Both downloaded archives were independently checked: the hashes match the manifests and published GitHub asset digests, bin/llgo.exe exists, and all ZIP entry CRCs pass. The static installer scans also passed in both PRs. MSVC x64 and ARM64 installed and ran llgo.exe with exit code 0. MinGW has successful x64 and ARM64 ARP registration; its separate ARM64 executable-discovery review is not the x86 failure reported here.

Expected behavior

The x86 portable ZIP installs successfully without exhausting the client's address space during archive processing.

Actual behavior

Both x86 runs exit with -1978335229 (0x8a150003). The tail of the MSVC WinGet log is:

2026-10-29 00:46:52.183 <I> [CLI ] Installer hash verified
2026-10-29 00:47:04.586 <I> [CORE] Finished applying motw using IAttachmentExecute. Result: 0 IAttachmentExecute::Save() result: 0
2026-10-29 00:47:09.617 <E> [CLI ] Caught std::exception: bad allocation

The MinGW run has the same sequence and error.

A possible allocation-pressure source is Archive::ScanZipFile in v1.29.280, which materializes the entire ZIP in a vector before calling pure_zip. ScanArchiveFromLocalManifest calls the scanner even with the override argument; it checks the argument only after the scanner returns. This is a hypothesis consistent with the log sequence, not a confirmed stack trace. Please investigate the allocation behavior on x86 and the appropriate validation path for these archives.

Environment

WinGet: 1.29.280
OS: Windows.Desktop v10.0.19045.6456
Package: Microsoft.DesktopAppInstaller v1.29.280.0
Validation architecture: x86

Public diagnostic bundles (download URLs expire 2026-11-28):

Relevant files are ValidationResult/XGo.LLGo.{MSVC,MinGW}/1.0.9/InstallationVerification_Result.json and the x86-...-WinGet-...log files under InstallationVerificationLogs.

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

    Command-InstallIssue related to WinGet InstallNeeds-TriageIssue needs to be triaged

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions