Skip to content

onnxruntime-windowsml wheel lacks providers_shared DLL and warns on import #1441

Description

Summary

The onnxruntime-windowsml wheel used with WinML CLI 0.4.0 emits Init provider bridge failed. on a plain Python import. Its Python initialization attempts to load onnxruntime_providers_shared.dll, but that file is absent from both the original wheel and the installed package.

This is a non-blocking runtime-package/initialization issue exposed during CLI use. The runtime/wheel owners may need to investigate or receive this issue.

Environment

  • Windows 11 x64; Python 3.11.14
  • winml-cli: 0.4.0
  • windowsml: 2.7.52a0
  • onnxruntime-windowsml: 1.30.0.202609102321
  • ORT build commit: f2c39fe2f838cf35ce7da92824f5a5e3ee6e88a7 (Release)

Minimal reproduction

In the activated environment, run:

python -B -c "import onnxruntime as ort; print(ort.__version__); print(ort.get_build_info()); print(ort.get_available_providers())"

No model, CLI command, or inference session is needed.

Actual behavior

Stderr includes:

[W:onnxruntime:Default, onnxruntime_pybind_module.cc:45 onnxruntime::python::CreateOrtEnv] Init provider bridge failed.

Import succeeds and the process exits 0. It reports ORT 1.30.0 and available providers DmlExecutionProvider and CPUExecutionProvider.

The same warning appeared in all 31 captured CLI command logs, including successful configuration, export, compile, evaluation, and performance commands.

Investigation evidence

  • The original wheel and the installed distribution contain these native files under onnxruntime/capi: DirectML.dll, onnxruntime.dll, and onnxruntime_pybind11_state.pyd.
  • Neither contains onnxruntime_providers_shared.dll; the installed DLL/PYD binaries match the original wheel byte-for-byte.
  • A LoadLibraryExW probe at the expected shared-DLL path returns null and Windows error 126 (The specified module could not be found).
  • At the matching public ORT commit, CreateOrtEnv calls InitProvidersSharedLibrary(), logs this warning on failure, and still returns success.
  • The bridge loader tries to load onnxruntime_providers_shared.dll and resolve Provider_SetHost; its exception handler returns false without preserving the detailed loader error in this warning.
  • The exact build/assembly stage responsible for the missing file has not been established.

Expected behavior

The distributed wheel should be consistent with its initialization requirements. If this bridge is required for the build, include the matching DLL; if it is intentionally unsupported or unnecessary, avoid attempting its initialization on every import. Genuine failures should include enough diagnostic context to identify the missing component.

Impact and scope

The warning makes otherwise successful commands appear to have an unexplained provider initialization failure and hides the actionable loader error.

This report does not establish CPU fallback or failed GPU inference. In a separate targeted validation, the existing WinMLCG compiled context ran three times with session.disable_cpu_ep_fallback=1; ORT profiling recorded three WinMLCG kernel events and zero CPU kernel events. Legacy providers that require this shared bridge were not tested. No package repair or warning suppression was applied.

Activity

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

    bugSomething isn't workingneed triageNeeds triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions