diff --git a/rocclr/device/devhostcall.cpp b/rocclr/device/devhostcall.cpp index 4a5bfb235b..3c8233f73e 100644 --- a/rocclr/device/devhostcall.cpp +++ b/rocclr/device/devhostcall.cpp @@ -334,15 +334,14 @@ void HostcallListener::consumePackets() { } void HostcallListener::terminate() { - if (thread_.state() < Thread::FINISHED && !amd::Os::isThreadAlive(thread_)) { - return; - } - kHostThreadActive.state = Init::State::kExit; - doorbell_->Reset(SIGNAL_DONE); + if (thread_.state() >= Thread::FINISHED || amd::Os::isThreadAlive(thread_)) { + kHostThreadActive.state = Init::State::kExit; + doorbell_->Reset(SIGNAL_DONE); - // FIXME_lmoriche: fix termination handshake - while (thread_.state() < Thread::FINISHED) { - amd::Os::yield(); + // FIXME_lmoriche: fix termination handshake + while (thread_.state() < Thread::FINISHED) { + amd::Os::yield(); + } } #if defined(__clang__)