On Tuesday, 14 September 2021 at 16:15:20 UTC, eugene wrote:
On Tuesday, 14 September 2021 at 16:07:00 UTC, jfondren wrote:
No. And when was the first one?

here:

On Monday, 13 September 2021 at 18:45:22 UTC, jfondren wrote:
 auto p = cast(EpollEvent*) pureMalloc(EpollEvent.sizeof);

What? Allocate struct epoll_event on the heap?
It is a feeble joke ;)

It is an example of deliberately static storage that does not fix your problem, thereby proving that the broken lifetimes of the struct are not your only problem.

I explained that one at the time, and I explained this one. If it comes with an explanation, it's probably not a joke.


```c
    static int ecap__add(int fd, void *dptr)
    {
        struct epoll_event waitfor = {0};
           int flags, r;

        waitfor.data.ptr = dptr;

        r = epoll_ctl(epfd, EPOLL_CTL_ADD, fd, &waitfor);
        if (-1 == r) {
```

All fd's (sockets, timers etc) are added the same way
and corresponding EventSources are not destroyed by GC.

GC needs to be able to stop your program and find all of the live objects in it. The misaligned pointer and the reference-containing struct that vanishes on the return of your corresponding function are both problems for this.

Reply via email to