Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
ad587e7
Fix AsyncInferQueue to prevent use-after-free issues with shared inputs
praasz Jun 24, 2026
d912aeb
Enhance shell command execution with timeout and improve _requests_ge…
praasz Jun 24, 2026
2a92eb2
Increase shell command timeout from 600 to 1200 seconds.
praasz Jun 24, 2026
05865da
Clear stale _inputs_data entry when share_inputs=False to avoid memor…
praasz Jun 24, 2026
af2049e
Add test: stale shared-input reference released when handle reused wi…
praasz Jun 24, 2026
90d2390
Revert invalid pop fix; add correct _inputs_data ownership tests
praasz Jun 24, 2026
0b9f9da
tests: fix flake8 E501 line-too-long violations in async infer queue …
praasz Jun 25, 2026
aadb344
Remove test skip
praasz Jun 25, 2026
0d8b75a
Test with longer timeout and other cleanup
praasz Jun 26, 2026
863193a
Expand log on CI jobs
praasz Jun 29, 2026
9d3848f
tests: enhance smoke test logging and increase timeout
praasz Jun 29, 2026
6156de2
tests: improve logging in common utilities and test classes
praasz Jun 30, 2026
452599c
tests: add INFO-level logging for device initialization and enhance t…
praasz Jul 1, 2026
f252fed
tests: enhance logging in shell command execution and add test tags f…
praasz Jul 2, 2026
5ff0ffd
tests: implement per-worker logging for pytest-xdist to avoid log int…
praasz Jul 5, 2026
5f41e69
tests: reduce shell command timeout to improve responsiveness and ens…
praasz Jul 8, 2026
2245442
Merge remote-tracking branch 'origin/master' into bugfix/pytest-test-…
praasz Jul 10, 2026
e99d8e1
tests: add schedule dtor step diagnostics to expose shutdown hang loc…
praasz Jul 14, 2026
902ef34
bindings/python: release GIL in AsyncInferQueue destructor to prevent…
praasz Jul 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 22 additions & 3 deletions .github/workflows/job_samples_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,8 @@ jobs:
export IE_APP_PATH=$INSTALL_DIR/samples_bin
export IE_APP_PYTHON_PATH=$INSTALL_DIR/samples/python
export SHARE=$INSTALL_TEST_DIR/smoke_tests/samples_smoke_tests_data
# Enable AUTO/MULTI plugin INFO-level logging to diagnose device-init hangs
export OPENVINO_LOG_LEVEL=2

# Install Python benchmark_app by installing openvino-*.whl
python3 -m pip install --ignore-installed PyYAML -r $INSTALL_TEST_DIR/smoke_tests/requirements.txt
Expand All @@ -139,15 +141,32 @@ jobs:
source ${INSTALL_DIR}/setupvars.sh

PYTHONCOERCECLOCALE=warn python3 -bb -W error -X dev -m pytest $INSTALL_TEST_DIR/smoke_tests \
--numprocesses auto \
-v -ra \
-o log_cli=true --log-cli-level=INFO \
--timeout=180 \
-o log_cli=true --log-cli-level=DEBUG \
--timeout=300 \
--timeout-method=signal \
--log-file=$INSTALL_TEST_DIR/samples_smoke_tests.log \
--log-file-level=DEBUG \
--junitxml=$INSTALL_TEST_DIR/TEST-samples_smoke_tests.xml

- name: Dump system state on failure
if: failure()
run: |
echo "=== Running processes ==="
ps auxf || true
echo "=== Memory usage ==="
free -h || true
echo "=== Kernel OOM / kill events ==="
dmesg | grep -iE 'oom|kill|out of memory' | tail -30 || true

- name: Upload Test Results
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: ${{ always() }}
with:
name: test-results-samples
path: ${{ env.INSTALL_TEST_DIR }}/TEST-samples_smoke_tests.xml
path: |
${{ env.INSTALL_TEST_DIR }}/TEST-samples_smoke_tests.xml
${{ env.INSTALL_TEST_DIR }}/samples_smoke_tests.log
${{ env.INSTALL_TEST_DIR }}/samples_smoke_tests_gw*.log
if-no-files-found: 'warn'
23 changes: 20 additions & 3 deletions .github/workflows/windows_vs2022_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -166,10 +166,14 @@ jobs:
python3 -m pip install pytest-timeout==2.4.0
. "./setupvars.ps1"
$Env:PYTHONCOERCECLOCALE="warn"
# Enable AUTO/MULTI plugin INFO-level logging to diagnose device-init hangs
$Env:OPENVINO_LOG_LEVEL="2"
python3 -bb -W error -X dev -X warn_default_encoding -m pytest ./tests/smoke_tests --numprocesses auto `
-v -ra `
-o log_cli=true --log-cli-level=INFO `
--timeout=180 `
-o log_cli=true --log-cli-level=DEBUG `
--timeout=300 `
--log-file=${{ env.INSTALL_TEST_DIR }}/samples_smoke_tests.log `
--log-file-level=DEBUG `
--junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-samples_smoke_tests.xml
env:
IE_APP_PATH: ${{ env.INSTALL_DIR }}/samples_bin
Expand All @@ -178,12 +182,25 @@ jobs:
WORKSPACE: ${{ env.INSTALL_DIR }}
working-directory: ${{ env.INSTALL_DIR }}

- name: Dump system state on failure
if: ${{ always() }}
run: |
echo "=== Running processes ==="
Get-Process | Sort-Object CPU -Descending | Select-Object -First 30 | Format-Table -AutoSize
echo "=== Memory usage ==="
Get-WmiObject Win32_OperatingSystem | Select-Object FreePhysicalMemory, TotalVisibleMemorySize | Format-List
shell: pwsh
continue-on-error: true

- name: Upload Test Results
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: ${{ always() }}
with:
name: test-results-samples
path: ${{ env.INSTALL_TEST_DIR }}/TEST-samples_smoke_tests.xml
path: |
${{ env.INSTALL_TEST_DIR }}/TEST-samples_smoke_tests.xml
${{ env.INSTALL_TEST_DIR }}/samples_smoke_tests.log
${{ env.INSTALL_TEST_DIR }}/samples_smoke_tests_gw*.log
if-no-files-found: 'warn'

# Test .bat scripts for samples building
Expand Down
16 changes: 8 additions & 8 deletions src/bindings/python/src/openvino/_ov_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -565,14 +565,14 @@ def start_async(
Default value: False
:type share_inputs: bool, optional
"""
super().start_async(
_data_dispatch(
self[self.get_idle_request_id()],
inputs,
is_shared=share_inputs,
),
userdata,
)
request_id = self.get_idle_request_id()
request = self[request_id]
dispatched = _data_dispatch(request, inputs, is_shared=share_inputs)
if share_inputs:
if not hasattr(self, "_inputs_data"):
self._inputs_data = {}
self._inputs_data[request_id] = getattr(request, "_inputs_data", None)
super().start_async(dispatched, userdata)


class Core(CoreBase):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ class AsyncInferQueue {
}

~AsyncInferQueue() {
// Release the GIL while clearing requests (which may trigger C++ destructor chains
// including executor thread joins that may need to acquire the GIL in callbacks).
py::gil_scoped_release release;
m_requests.clear();
}

Expand Down
Loading
Loading