AA vs __gshared
IchorDev
zxinsworld at gmail.com
Fri Jul 28 15:15:14 UTC 2023
On Friday, 28 July 2023 at 11:15:31 UTC, Steven Schveighoffer
wrote:
> All `__gshared` does is give you storage that is accessible
> from all threads,
"All __gshared does is give you [a live bomb, ready to go off at
any moment]"
!!
On Friday, 28 July 2023 at 14:10:16 UTC, Kagamin wrote:
> Your error is using allocating the object with malloc. Since gc
> doesn't see your AA, the AA is freed and you get UAF.
Friend, I think you nailed it. After adding this I haven't been
able to reproduce the segfault again:
```d
this(long n){
(){
cache = new typeof(cache);
assert(cache);
import core.memory;
core.memory.GC.addRoot(cast(void*)cache);
}();
// ...
```
It did always happen at random, so perhaps I haven't spent enough
time testing it yet, but I've gone far longer without it
segfaulting than ever before.
More information about the Digitalmars-d-learn
mailing list