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!"