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