On Tuesday, 16 June 2015 at 14:32:45 UTC, Steven Schveighoffer wrote:
On 6/16/15 10:00 AM, Etienne wrote:
There is a bug regarding unordered object collection in the GC. My
finalizer accesses another GC-allocated object

Don't do that. Nothing is guaranteed in order of destruction. Note that after calling the destructor of an object, the vtable pointer is nulled.

-Steve

Obviously the debugger shows that the object's destructor wasn't called. I have the class set as final and all the locals are there. Somehow its vtable is destroyed before though.

When I comment out the _d_invariant part at this point until the end, I can do a crazy amount of requests (this is a webserver) and there will be no crash at all.

So with the proper flags, its obviously possible to access a "final class" object locals during destruction, isn't this why the GC isn't re-entrant in the first place?

Reply via email to