I've come across another garbage collection/DOD issue that I'm trying to solve (without much success) and would appreciate some tips/advice on how to locate the source of the problem.


It appears (based on my tests) to cause strings to be marked as dead objects before their time. It appears to affectthe String class (in my case, a subclass of String). Oddly, it appears to only affect strings with a length of 1 (ie. a single character - changing the string to a longer length does not cause it be be marked as a dead object). If I turn DOD off with the sweepoff opcode, strings are not marked and collected.

I've also noticed similar behaviour when I use a native string type (ie. something declared with an IMC ".local string str" declaration) as a key in a Hash table (again, it only appears to happen when the string is a single character in length). Later, when I go back to retrieve the value stored in the hash, it can't find it. (Running an iterator over the keys of the Hash shows keys that appears as garbage characters (presumably string types that have since been collected).)

I've as of yet been unable to produce a concise, working example. Any tips as to how I can find the source of this bug?

Reply via email to