Hi,

I experience very strange problem: GC somehow collects live objects.

I found it because i got segfaults. After debugging and tracing i found this is because of accessing not allocated memory.

I did the following checks:

- added to some class invariant check for access to suspicious members with assertion

assert(GC.addrOf(cast(void*)x) !is null);


where it fails DETERMINISTICALLY at some point

- printing address of allocated classes where i observe the following pattern

-> ctor
     check
     check
     check
<- dtor
     check (fails)

could anybody advice me with something? I got really frustrated by this strange behaviour which i can not fix right now.

key observations:
- it is deterministically behaviour (what gets me even more confused cause GC collections as far as i know runs from time to time) - i do not play with pointers optimisation like hiding its in ints or floats. - i operate with large uniformly distributed (video) data in memory where pointer like patterns may occur. but this is not the case cause (1) it brings at worst long living objects (2) input sequence constant but allocated pointers each run different.

Reply via email to