Conversation
|
/label status/waiting-for-review |
|
AI PR state: Automatic merging is disabled. A maintainer performs the final merge. |
Merge Protections🟢 Merge protection satisfied — ready to merge. Show 1 satisfied protection🟢 Require linked issue for feature/bug PRs
|
LHT129
left a comment
There was a problem hiding this comment.
Thanks for this fix. The change is clean and correct.
Summary of the fix:
- Three call sites in
hgraph.cpp(KnnSearch,RangeSearch,SearchWithRequest) now guardresult->Top()withnot result->Empty()when descending route graph layers, preventing dereference of an empty result heap caused by non-finite distance filtering (e.g. all-NaN queries). - A regression test in
hgraph_add_test.cppexercises the all-NaN query path and verifies the search returns an empty result set rather than crashing.
Review notes:
- The fix is minimal and surgical — exactly what a bug fix should be.
- When all route graph layers return empty,
search_param.epretains its initial value (entry_point_id_), which is already validated againstINVALID_ENTRY_POINTbefore the loop. This is correct fallback behavior. - The test case is well-scoped: deterministic, self-contained, and directly targets the reported crash path.
- No correctness, performance, or security concerns found.
|
AI PR CI recovery
The failure is unrelated to the pull request. Rerun the same workflow; no repository changes were made. Reasoning: |
Codecov Report❌ Patch coverage is @@ Coverage Diff @@
## 0.18 #2802 +/- ##
==========================================
- Coverage 91.84% 91.76% -0.08%
==========================================
Files 335 335
Lines 20078 20089 +11
==========================================
- Hits 18440 18435 -5
- Misses 1638 1654 +16
Flags with carried forward coverage won't be shown. Click here to find out more.
Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
|
@vsag-bot This PR remains labeled status/ai-working, but Build with TSAN and Test Aarch64 (functests) are still failing and there has been no update since August 28. Please inspect the current failures and continue advancing the PR. |
|
@vsag-bot Please resume this PR. The current head still has failures in Build with TSAN (https://github.com/antgroup/vsag/actions/runs/33160117157/job/98812268706) and Test Aarch64 (functests) (https://github.com/antgroup/vsag/actions/runs/33160117244/job/98841395297). Please inspect the logs, address repository defects, and update the status label to reflect the actual progress or blocker. Review threads are resolved and GitHub currently reports no conflicts. |
|
AI PR continuation
I rebuilt the work on the latest base, pushed the remaining fix, and CI will run for the updated head. Summary: Root cause: Changes:
Validation:
Residual risks:
|
Signed-off-by: vsag-bot <276218163+vsag-bot@users.noreply.github.com> Assisted-by: Codex:codex-default
261072f to
ac61bba
Compare
|
@vsag-bot Thanks for updating the branch. Fresh CI on ac61bba now fails in the bundled OpenBLAS build, including ASan X86 (https://github.com/antgroup/vsag/actions/runs/35213407162/job/105176092608) and Lint (https://github.com/antgroup/vsag/actions/runs/35213407034/job/105177637281); the lint job failed during its prerequisite build, not an identified clang-tidy finding. TSan build also failed (https://github.com/antgroup/vsag/actions/runs/35213406968/job/105179288229). Please inspect detailed dependency logs and continue. Related historical tracking: #2507; #2971 is a 1.0 dependency repair, not proof of the same cause on 0.18. Do not assume an OOM or CPU-detection cause without evidence, or change HGraph code merely to address an unrelated dependency failure. |
|
@vsag-bot Following up on the outstanding dependency-build failures: this PR still has the same head and failed ASan/Lint/TSan builds after the previous continuation request. Please inspect the OpenBLAS detailed logs, determine whether a scoped dependency fix/backport is needed on 0.18, and update the status label with the actual blocker. The 1.0 dependency fix #2971 has merged, but its applicability to these failures must be verified rather than assumed. Do not change HGraph behavior to hide an unrelated build failure. |
Summary
Fixed search- and construction-time empty candidate handling. The previously reproducible ASan overflow and dirty-vector result regression now pass under ASan/UBSan and TSAN.
Root Cause
Non-finite vectors can leave route-search and graph-construction candidate heaps empty. HGraph dereferenced those heaps, pruning accessed an empty neighbor vector, and disconnected dirty nodes could replace valid graph entry points.
Changes
Validation
clang-format-15 --dry-run --Werror <changed C++ files> && git diff --check: passed - Formatting and whitespace checks passed.cmake --build build-tsan-ai-clean --parallel 4: passed - Complete TSAN build passed; final affected sources and targets rebuilt successfully.TSAN focused unit tests: passed - HGraph and pruning regressions passed with 22 assertions and no TSAN diagnostics.TSAN functests '(PR) HGraph Search with Dirty Vector': passed - 283 assertions passed with no TSAN diagnostics.ASAN/UBSAN focused build and unit tests: passed - Both test binaries built; 22 focused assertions passed.ASAN/UBSAN functests '(PR) HGraph Search with Dirty Vector': passed - 283 assertions passed; the prior heap-buffer-overflow no longer occurs.Residual Risks
Base branch:
0.18Fixes #2801
Updated by
vsag-botfollowing maintainer direction from @wxyucs.