Found a memory leak in how Dispatcher deals with it's back-reference table. Basically it would allow you to replace a registratation of a receiver, but would not remove the replaced receiver's back-references. It also wasn't removing the back-reference when a signal was explicitly disconnected.
Both of those operations are fairly rare, but Cinemon does them a few tens of thousands of times every 20 minutes or so. That's pretty close to matching the memory leak's observed speed.
I've added code to the test suite which checks that there are no remaining records in any of the internal tables after each test. There may still be cases where a leak can occur, but the common (and even many not-so-common) cases all appear to be leak-free at the moment.
Pingbacks are closed.