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
此提交包含在:
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
新增問題並參考
封鎖使用者