What    |Removed                     |Added
             Status|NEW                         |RESOLVED
         Resolution|                            |INVALID

--- Comment #18 from 2011-09-13 17:52:15 PDT ---

You won't like the cause of your bug.
All fields in a struct are default initialized.
Pointers with null, Integrals with 0, Floats with NaN and enums with
the first enum member.

enum BlkAttr : uint
    FINALIZE    = 0b0000_0001, /// Finalize the data in this block on collect.
    NO_SCAN     = 0b0000_0010, /// Do not scan through this block on collect.
    NO_MOVE     = 0b0000_0100,  /// Do not move this memory block on collect.
    APPENDABLE  = 0b0000_1000, /// This block contains the info to allow
    NO_INTERIOR = 0b0001_0000

That means the attr flag in your memory pool is always set to BlkAttr.FINALIZE.
Every GC.malloc you do will get a wrong finalization.
It can be avoided this by giving a default value to the field.
GC.BlkAttr attr = cast(GC.BlkAttr)0;
Arguably this could be the default member in BlkAttr.

I will close this bug and open a new one for the order of class finalization.

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to