On Thursday, 16 September 2021 at 15:34:25 UTC, Steven Schveighoffer wrote:

`dup` is a GC allocation. Are you using that in your C code? the GC might be collecting that string.

The compiler doesn't show that lines with -vgc. Maybe it knows that it is only stack allocated?

Technically, the GC could collect that data if it wants - it's not longer used after the function returns. At least I control that the GC cannot collect it till my data is processed, so there should be no problem.

I guess the C-methods did corrupt the memory which the compiler has reserved for that function data statically and then the GC collect marks it as free or some other UB.


You are better off to cast away the immutable (as long as you are 100% sure the C code isn't writing to it), as the string literal will not be collected.

-Steve

Yes, I changed it to stringz and a cast and the problem is gone so far. All char* are read only in the function or passed to stdlib functions that should not modify it.


Reply via email to