Skip to content

πŸ› Access violation (0xC0000005) on win32-arm64 β€” regression in 2.5.2, still present in 2.5.7Β #11242

Description

@fmadore

Environment information

Details
CLI:
  Version:                      2.5.7
  Color support:                true

Platform:
  CPU Architecture:             aarch64
  OS:                           windows

Environment:
  BIOME_DISTRIBUTION:                unset
  BIOME_LOG_PATH:                    unset
  BIOME_LOG_PREFIX_NAME:             unset
  BIOME_LOG_LEVEL:                   unset
  BIOME_LOG_KIND:                    unset
  BIOME_CONFIG_PATH:                 unset
  BIOME_THREADS:                     unset
  BIOME_WATCHER_KIND:                unset
  BIOME_WATCHER_POLLING_INTERVAL:    unset
  NO_COLOR:                     unset
  TERM:                         xterm-256color
  JS_RUNTIME_VERSION:           unset
  JS_RUNTIME_NAME:              unset
  NODE_PACKAGE_MANAGER:         unset

Biome Configuration:
  Status:                       Not set
  Path:                         unset

Workspace:
  Open Documents:               0

Host: Windows 11 (10.0.26200), Snapdragon / Windows-on-ARM, Node v24.18.1 win32-arm64.

What happened?

biome lint crashes with an access violation on win32-arm64 as soon as it does
any analysis work. It reproduces on a two-line JavaScript file with no
configuration file anywhere on the path, so it is not rule-, config- or
project-specific.

  1. Create an empty directory outside any repository:

    mkdir biome-arm-repro
    cd biome-arm-repro
    "const a = 1;`nconsole.log(a);" | Set-Content t.js
  2. Install the platform binary directly (bypassing the @biomejs/biome wrapper,
    to rule the wrapper out):

    npm i --no-save @biomejs/cli-win32-arm64@2.5.7
  3. Run it:

    & .\node_modules\@biomejs\cli-win32-arm64\biome.exe lint t.js

Result: no output at all, and

LASTEXITCODE = -1073741819   # 0xC0000005, STATUS_ACCESS_VIOLATION

Under Git Bash the same command reports Segmentation fault, exit 139.

biome --version and biome rage both succeed at the same version (the rage
output above was produced by the very binary that crashes), so the executable
loads and runs β€” it dies only once it starts analysing.

Bisect

Same machine, same t.js, same command, only the version of
@biomejs/cli-win32-arm64 changed:

Version Result
2.4.16 βœ… lints
2.5.0 βœ… lints
2.5.1 βœ… lints
2.5.2 ❌ 0xC0000005
2.5.3 ❌ 0xC0000005
2.5.4 ❌ 0xC0000005
2.5.5 ❌ 0xC0000005
2.5.6 ❌ 0xC0000005
2.5.7 ❌ 0xC0000005

2.5.2 is the first affected release. To confirm the passing runs are not a
silent no-op, I ran 2.5.0 against a file with an actual violation
(if (a == b) { var x = 1 }) and it correctly reported
lint/correctness/noUnusedVariables.

Nothing in the 2.5.2 release notes looks platform- or build-related β€” they are
all rule and formatter changes β€” so I suspect the toolchain or build
configuration rather than a specific code change.

Possibly related

This looks like the same bug class as #10270 ("Biome 2.4.14 broken on Windows on
ARM"), which was closed as fixed on 2026-05-07 with the conclusion, from the
biome-win-arm-debug CI runs, that 2.4.14 was the only affected version. That
no longer holds: 2.5.2 through 2.5.7 are all affected on this machine.

Workaround, for anyone who lands here

The x64 binary runs fine under Windows-on-ARM emulation:

npm i --no-save --force --cpu=x64 --os=win32 --prefix /tmp/biome-x64 @biomejs/cli-win32-x64@2.5.7
/tmp/biome-x64/node_modules/@biomejs/cli-win32-x64/biome.exe lint .

I am happy to run further diagnostics on this machine β€” a debug build, a
pkg.pr.new build, or a bisect over commits between 2.5.1 and 2.5.2 β€” if that
would help narrow it down.

Expected result

biome lint t.js should lint the file and exit 0, as it does on 2.5.1 and as it
does with the x64 binary under emulation.

Code of Conduct

  • I agree to follow Biome's Code of Conduct

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions