Fix soft hang on AQLQueue destruction with a timeout

Add timeout to AQLQueue destructor signal wait to prevent indefinite hang

Change-Id: I6c6c98a7bdd27d39569af1d667aa9aa7e9596535
Signed-off-by: Chris Freehill <cfreehil@amd.com>


[ROCm/ROCR-Runtime commit: 4e9647704d]
이 커밋은 다음에 포함됨:
Shweta.Khatri 작성하고 Chris Freehill가 2024-06-25 12:27:09 -05:00를 커밋함
1 부모 14f6875df2
커밋 abc4fcabb5
1 파일이 변경됨
+4 -1
+4 -1
파일 보기
@@ -365,8 +365,11 @@ AqlQueue::~AqlQueue() {
// Remove kfd exception handler
exceptionState |= ERROR_HANDLER_TERMINATE;
while ((exceptionState & ERROR_HANDLER_DONE) != ERROR_HANDLER_DONE) {
const uint64_t timeout_ms = 5000;
exception_signal_->StoreRelease(-1ull);
exception_signal_->WaitRelaxed(HSA_SIGNAL_CONDITION_NE, -1ull, -1ull, HSA_WAIT_STATE_BLOCKED);
exception_signal_->WaitRelaxed(HSA_SIGNAL_CONDITION_NE, -1ull, timeout_ms,
HSA_WAIT_STATE_BLOCKED);
}
Inactivate();