SWDEV-462192 SWDEV-459056 - Fixes corruption
SPT is destroyed with hipDeviceReset(). If a stream is created right after reset, the same object id could be reused. Later SPT destructor incorrectly verifies that the stream is valid referring to the reused object id causing the corruption. Change-Id: I3b1f7ffdf8bab874dca7b8fde22318162997b8f6
Этот коммит содержится в:
коммит произвёл
Sourabh Betigeri
родитель
464b99373b
Коммит
f6a68b3c2e
@@ -249,6 +249,7 @@ void Device::destroyAllStreams() {
|
||||
for (auto& it : toBeDeleted) {
|
||||
hip::Stream::Destroy(it);
|
||||
}
|
||||
hip::tls.stream_per_thread_obj_.clear_spt();
|
||||
}
|
||||
|
||||
// ================================================================================================
|
||||
|
||||
@@ -269,6 +269,7 @@ public:
|
||||
void operator=(const stream_per_thread& ) = delete;
|
||||
~stream_per_thread();
|
||||
hipStream_t get();
|
||||
void clear_spt();
|
||||
};
|
||||
|
||||
class Device;
|
||||
|
||||
@@ -236,6 +236,10 @@ hipStream_t stream_per_thread::get() {
|
||||
return m_streams[currDev];
|
||||
}
|
||||
|
||||
void stream_per_thread::clear_spt() {
|
||||
m_streams[getCurrentDevice()->deviceId()] = nullptr;
|
||||
}
|
||||
|
||||
|
||||
// ================================================================================================
|
||||
void getStreamPerThread(hipStream_t& stream) {
|
||||
|
||||
Ссылка в новой задаче
Block a user