[https://nvbugs/6418912][fix] Prevent BufferIndexHolder test deadlock - #15994
[https://nvbugs/6418912][fix] Prevent BufferIndexHolder test deadlock#15994chienchunhung wants to merge 1 commit into
Conversation
Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
|
/bot run --disable-fail-fast --stage-list "A30-CPP-Post-Merge-2" |
|
PR_Github #57806 [ run ] triggered by Bot. Commit: |
|
PR_Github #57806 [ run ] completed with state
|
|
/bot run --disable-fail-fast --stage-list "A30-CPP-Post-Merge-2" |
|
PR_Github #57836 [ run ] triggered by Bot. Commit: |
|
PR_Github #57836 [ run ] completed with state
|
|
/bot run |
|
PR_Github #57865 [ run ] triggered by Bot. Commit: |
|
PR_Github #57865 [ run ] completed with state
|
|
/bot run --disable-fail-fast --stage-list "DGX_B200-PyTorch-9" |
|
PR_Github #58042 [ run ] triggered by Bot. Commit: |
|
Closing this PR as it is subsumed by #16019 |
|
PR_Github #58042 [ run ] completed with state |
Summary
BufferIndexHolderLifecycleTestwith two send and receive slots so move-assignment coverage can hold both the source and destination indices simultaneously.Root cause
MoveAssignReleasesPriorThenTransfersacquired two buffer indices before constructing either RAII holder. Both pools default to one slot, so the second acquisition waited indefinitely on the pool condition variable and the move assignment was never exercised.This was reported by NVBUG 6418912 in
A30-CPP-Post-Merge-2; both the send and receive variants timed out.Why this escaped earlier
PR #14768 added the test, but its recorded pre-merge runs did not execute the A30 C++ post-merge stage. The final PR head used
/bot skipafter separate performance verification in #14916. The fixture also depended implicitly on CI-provided concurrency environment values, so it could appear healthy anywhere those values provided at least two slots.This change makes the required capacity explicit and removes that environment dependence.
Validation
pre-commit run --files cpp/tests/unit_tests/batch_manager/bufferIndexHolderTest.cppA30-CPP-1pipeline #46619 completed SUCCESS on integration head1248a186.FillKvCacheWithRequestsAndCompleteOneByOne/5crash exposed after this timeout was removed.Earlier standalone pipelines #46503, #46532, and #46562 did not contain all companion fixes, so their later KV-cache failures do not invalidate this BufferIndexHolder fix.