debugging GC issues?
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Tue Jun 22 03:21:26 UTC 2021
On 6/18/21 1:45 PM, WebFreak001 wrote:
> 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?
32 or 64 bits?
More information about the Digitalmars-d
mailing list