On 2014-11-17 6:12 PM, Maxime Chevalier-Boisvert wrote:
Help or advice on solving this problem is welcome.

I've tried dumping logs from the garbage collection process and it's the biggest waste of time. Even if you left a reference somewhere, the logs will not help identify the code that caused it.

Instead, you should do a test with the following:

Store in a string[size_t] a list of pointers that should have been collected, along with the variable name. Once you assume they should have been collected, run this:

http://dlang.org/phobos/core_thread.html#.thread_scanAll

The thread_scanAll function will send you valid memory ranges in your code.

Run the stored size_t list against each value contained in the memory range. Accumulate everything that matches into another hashmap, and then fail with the error "Variables [list of identifiers] still have references in the code!"


Reply via email to