Can you tell more about what is the corruption ? Are you getting garbage elements from front ? Can you use a debugger or add some writeln to show some pointer addresses ? Is GC.collect() changing something (like triggering the problem earlier) ?