Fix pyarrow version which causes winml eval crash#750
Merged
Conversation
xieofxie
approved these changes
May 26, 2026
timenick
approved these changes
May 26, 2026
timenick
added a commit
that referenced
this pull request
May 27, 2026
…757) ## Summary - Folds the seven fixes merged after the v0.1.0 release notes into the existing v0.1.0 changelog section: #745, #746 (inspect), #747, #753 (perf), #750 (eval), #744/#752, #754 (analyze/compile e2e). - Trims the v0.1.0 section to focus on user-visible changes: - Removed telemetry mentions (#728 preview bullet and #693 fix line). - Removed pure-internal CI/test items (CI display name rename, ADO pipeline UI plumbing, mock fixes, branch back-merge).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #749
PR Description
Fix:
winml evalcrash when--deviceis not specifiedProblem
Running
winml evalwithout an explicit--deviceflag crashes the process with an access violation (0xC0000005) during dataset loading.Root Cause
The crash is triggered by a DLL incompatibility between
pyarrow24.x and the WinML/ONNX Runtime EP DLLs:--deviceis omitted,winml evalresolves the device and preloads the EP DLLs (via_preload_bundled_onnxruntime_dll) before importing thedatasetspackage.datasetsthen loadspyarrow's C extension on top of the already-loaded EP DLLs.pyarrow24.x ships a native binary that conflicts with the WinML EP DLLs in this load order, causing the access violation.This was only reproducible with
pyarrow24.x; versions ≤ 23 load cleanly regardless of order.Fix
Cap
pyarrowto>=21,<24in pyproject.toml. This stays within the range required bydatasets(which needspyarrow>=21), so no other dependencies are affected.The existing comment above the pin already documents the crash details and the conditions for revisiting the cap (re-test 24.x patches / 25.x before relaxing).
Validation
uv run winml eval -m microsoft/resnet-50 --samples 100now completes without--devicespecified.pyarrow < 24.