On 9/14/21 8:42 AM, eugene wrote:
On Tuesday, 14 September 2021 at 12:09:03 UTC, Steven Schveighoffer wrote:

I still recommend pinning the object when adding the epoll event and seeing if that helps.

I understand your idea, but even if this will help, the question
remains - why that particular object is so special for GC.


Philosophically, it places the responsibility of making sure the object is valid while using it on the thing that chooses to store it outside the GC's view.

Looking at your examples, you are having to store these object references elsewhere, surrounding seemingly innocuous and normal D usage of objects. You have put the burden on the caller to make sure the implementation details are sound.

But I agree that a superficial reading of your code seems like it ought to not be collected, and that problem is also worth figuring out. I have high confidence that it's probably not a design flaw in the GC, but rather some misunderstanding of GC-allocated lifetimes in your code. But that doesn't mean it's not actually a bug somewhere in D.

-Steve

Reply via email to