On Tuesday, 14 September 2021 at 12:09:03 UTC, Steven Schveighoffer wrote:
Though as I have learned helping C converts before, most of the time things like this have to do with forgetting to store a GC reference somewhere.

Yeah, in my first version I had

```d
    foreach (k; 0 .. nConnections) {
        auto sm = new EchoClient(rxPool, txPool);
        sm.run();
    }
```

instead of

```d
    EchoClient[] wrkMachines;
    foreach (k; 0 .. nConnections) {
        auto sm = new EchoClient(rxPool, txPool);
        wrkMachines ~= sm;
        sm.run();
    }
```

and even

```d
    {
        auto stopper = new Stopper();
        stopper.run();
    }
```

:)

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.

Reply via email to