Skip to content

Commit a722227

Browse files
committed
[SYCL] Fix hang caused in deallocateStreams
This patch fixes hang caused by data race in `scheduler.cpp`'s `deallocateStreams` function: data of `StreamsToDeallocate` vector is corrupted by another thread, and due to this, it was a hang in `Scheduler::deallocateStreamBuffers` function when `StreamBuffersPool[Impl]` had been being deleted.
1 parent e1d8db7 commit a722227

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

sycl/source/detail/scheduler/scheduler.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,8 @@ void Scheduler::cleanupFinishedCommands(EventImplPtr FinishedEvent) {
189189
if (FinishedCmd)
190190
MGraphBuilder.cleanupFinishedCommands(FinishedCmd, StreamsToDeallocate);
191191
}
192+
deallocateStreams(StreamsToDeallocate);
192193
}
193-
deallocateStreams(StreamsToDeallocate);
194194
}
195195

196196
void Scheduler::removeMemoryObject(detail::SYCLMemObjI *MemObj) {
@@ -226,9 +226,9 @@ void Scheduler::removeMemoryObject(detail::SYCLMemObjI *MemObj) {
226226
MGraphBuilder.decrementLeafCountersForRecord(Record);
227227
MGraphBuilder.cleanupCommandsForRecord(Record, StreamsToDeallocate);
228228
MGraphBuilder.removeRecordForMemObj(MemObj);
229+
deallocateStreams(StreamsToDeallocate);
229230
}
230231
}
231-
deallocateStreams(StreamsToDeallocate);
232232
}
233233

234234
EventImplPtr Scheduler::addHostAccessor(Requirement *Req) {

0 commit comments

Comments
 (0)