SWDEV-372757 - Don't destroy null queue in MT

Skip destruction of the null queue for MT. Windows can destroy worker
thread on exit during the stream destruction, causing a race condition.

Change-Id: I3e4bc3ab2b477d38c0aec1fc59e6f1af0f8f6b0f


[ROCm/clr commit: f39655c0c8]
Este commit está contenido en:
German
2023-01-06 15:18:26 -05:00
cometido por Maneesh Gupta
padre 149afa9444
commit 3afbe3a155
Se han modificado 2 ficheros con 7 adiciones y 3 borrados
+1 -1
Ver fichero
@@ -406,7 +406,7 @@ namespace hip {
Device(amd::Context* ctx, int devId): context_(ctx),
deviceId_(devId),
null_stream_(this, Stream::Priority::Normal, 0, true),
flags_(hipDeviceScheduleSpin),
flags_(hipDeviceScheduleSpin),
isActive_(false),
default_mem_pool_(nullptr),
current_mem_pool_(nullptr)
+6 -2
Ver fichero
@@ -48,8 +48,12 @@ Stream::~Stream() {
amd::ScopedLock lock(streamSetLock);
streamSet.erase(this);
queue_->release();
queue_ = nullptr;
// Skip queue destruction for null stream in MT. Queue worker thread can be destroyed on
// the app exit, during the stream destruction, causing a race condition.
if (!null_ || AMD_DIRECT_DISPATCH) {
queue_->release();
queue_ = nullptr;
}
}
}