Skip to content

Conversation

bso-intel
Copy link
Contributor

@bso-intel bso-intel commented Dec 1, 2020

Memory leak in event pool was caused because we failed to invoke zeEventPoolDestroy() because we set the live events of the newly created pool with max number of events. And then we only destroy the pool if the live events count drops to zero.
The number of live events drops to zero only we really used all 256 events available in the pool.
Therefore, it became a memory leak when only a few events are used in the pool.
The fix is to introduce a new method finalize() in pi_context class.
This method is invoked from the pi_context destructor.
It checks if there is any pool that has non-zero live events and then calls zeEventPoolDestroy for it to deallocate event pool associated with the context.

Signed-off-by: Byoungro So [email protected]

Memeory leak was caused by two errors.
1. incorrectly setting the number of live events in the event pool initially.
2. never increment the number of live events afterwards.

Signed-off-by: Byoungro So <[email protected]>
Signed-off-by: Byoungro So <[email protected]>
@bso-intel bso-intel marked this pull request as ready for review December 2, 2020 21:40
added mutex guard before check live event in the pool

Signed-off-by: Byoungro So <[email protected]>
Signed-off-by: Byoungro So <[email protected]>
@bader bader merged commit 68fc780 into intel:sycl Dec 7, 2020
@bso-intel bso-intel deleted the eventpool-mem-leak branch December 7, 2020 22:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants