microsoft / microsoft/winml-cli
Bug: test_reshape_openvino_npu_quick hangs in EPChecker.check_compile (env/driver issue, not code regression)
@chinazhangchao is already working on this.
Since May 11, 2026.
- Dominant language
- Python
- Stars
- 40
- Forks
- 11
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 50
Description
Symptom
tests/integration/analyze/runtime_checker/test_reshape_openvino.py::test_reshape_openvino_npu_quick hangs indefinitely on a developer machine that has an Intel NPU + OpenVINO drivers installed (i.e. expected to be a green path).
The hang traces to:
tests/integration/analyze/runtime_checker/test_helper.py:63 list(test_results_iter)
src/winml/modelkit/pattern/op_input_gen/op_input_gen.py:1546 check_on_ep
src/winml/modelkit/analyze/runtime_checker/runner.py:294 future.result(timeout=self.timeout_sec)
The worker subprocess never returns from EPChecker.check_compile for OpenVINOExecutionProvider on OrtHardwareDeviceType.NPU. The internal timeout eventually fires; faulthandler dumps the worker stack and pytest exits non-zero.
Reproduction
uv run pytest tests/integration/analyze/runtime_checker/test_reshape_openvino.py::test_reshape_openvino_npu_quick -v --timeout=180
Bisection — not an in-tree regression
| Commit | Description | Result |
|---|---|---|
77d553b (recent main) |
Phase-3 telemetry | HUNG |
5d9fcfc^ (parent of #357 "kill timeout process") |
"add ms gelu" | HUNG |
2a24d0f |
"update qdq for deepseek" | HUNG |
a86f347 |
first public commit | HUNG |
Test reproduces the hang back to the first public commit on this hardware, so the issue is not a code regression. The hang is upstream of the timeout/kill code path that #357 modified — future.result is waiting on a worker that is stuck inside the actual OpenVINO compile call.
Hypothesis — environment / driver layer
The OpenVINO NPU Compile call hangs in the worker subprocess. Likely candidates:
- OpenVINO Python package version mismatched with the installed NPU driver
- NPU driver state (e.g. residual context from a previous crashed run)
- ORT NPU device enumeration interaction
Suggested investigation
uv pip show openvino— record version on the affected machine- Compile a minimal
Reshape-only ONNX model directly via the OpenVINO Python API targeting NPU — does the standalone path also hang? - Reproduce on a CI agent with NPU — if it also hangs there, this is an OpenVINO/driver compatibility issue at the
EPChecker.check_compilelayer; file upstream. - If only reproducible on developer boxes, document the required driver / OpenVINO versions in the contributing guide.
Out of scope for this issue
This is not about ModelKit's timeout handling code (that path is fine; the test never gets that far). It is about why the actual NPU compile call doesn't return.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.