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
This commit is contained in:
Sourabh Betigeri
2024-08-15 12:14:41 -07:00
کامیت شده توسط Sourabh Betigeri
والد 464b99373b
کامیت f6a68b3c2e
3فایلهای تغییر یافته به همراه6 افزوده شده و 0 حذف شده
@@ -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) {