SWDEV-510319 - Fixed random segfaults in graph tests
This change fixes random segfaults in graph tests that are seen after the change make internal callbacks non-blocking. The callback thread that decreases the GraphExec ref count may now run after the runtime shutdown. This can cause a segfault because the hip::device that is accessed in GraphExec destructor is already destroyed during runtime shutdown. This patch ensures that the hip::device object stays alive until after the callback thread completes. Change-Id: I75a6ac01f27a0b2250bbd10ed389ebfb322927af
This commit is contained in:
1 parent
c460b0541b
commit
21c223f8df
3 files changed
+7
-5
No files matched your search
@@ -235,11 +235,13 @@ bool HsaAmdSignalHandler(hsa_signal_value_t value, void* arg) {
|
||||
// Reset last used SDMA engine mask
|
||||
gpu->setLastUsedSdmaEngine(0);
|
||||
|
||||
bool isBlocking = ts->GetBlocking();
|
||||
|
||||
// Update the batch, since signal is complete
|
||||
gpu->updateCommandsState(ts->command().GetBatchHead());
|
||||
|
||||
// Reset API callback signal. It will release AQL queue and start commands processing
|
||||
if (callback_signal.handle != 0 && ts->GetBlocking()) {
|
||||
if (callback_signal.handle != 0 && isBlocking) {
|
||||
hsa_signal_subtract_relaxed(callback_signal, 1);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user