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
2024-08-15 12:14:41 -07:00
коммит произвёл Sourabh Betigeri
родитель 464b99373b
Коммит f6a68b3c2e
3 изменённых файлов: 6 добавлений и 0 удалений
+1
Просмотреть файл
@@ -249,6 +249,7 @@ void Device::destroyAllStreams() {
for (auto& it : toBeDeleted) {
hip::Stream::Destroy(it);
}
hip::tls.stream_per_thread_obj_.clear_spt();
}
// ================================================================================================
+1
Просмотреть файл
@@ -269,6 +269,7 @@ public:
void operator=(const stream_per_thread& ) = delete;
~stream_per_thread();
hipStream_t get();
void clear_spt();
};
class Device;
+4
Просмотреть файл
@@ -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) {