debugging GC issues?
    WebFreak001 
    d.forum at webfreak.org
       
    Fri Jun 18 17:45:25 UTC 2021
    
    
  
we have an issue in D-Scanner / libdparse that with very large 
files memory corruption occurs. After further investigation it 
seems that the contents of a string might have been moved as they 
are being reallocated.
The string is constructed 
[here](https://github.com/dlang-community/libdparse/pull/387/files#diff-073a681f37b7ac58a75cb15be50882a5075a2ebcaa53efc4bd97cffa037ab6ddR155) which calls [this function](https://github.com/dlang-community/libdparse/pull/387/files#diff-a10d3a7875381b5020edcd6e55a5555e4c43c8ab1947b30b41b434ce8fa59117R512) which allocates the string using an appender!string.
When first constructed the string is fine but after lots of 
further processing of other stuff the data the string points at 
suddenly is no longer considered allocated by the GC (maybe moved 
without updating the struct members?) and is reused from other 
stuff (in my case it was std.regex putting ir code in there, as 
shown in a GDB data watchpoint that first write to it)
See 
https://github.com/dlang-community/libdparse/pull/387#issuecomment-863442801
Does this seem like it should be possible if all code was safe? 
(`immutable(char)[]` being moved by GC) or do you see any obvious 
issues in this construct?
    
    
More information about the Digitalmars-d
mailing list