Program crash: GC destroys an object unexpectedly

jfondren julian.fondren at gmail.com
Sat Sep 18 09:54:05 UTC 2021


On Saturday, 18 September 2021 at 09:39:24 UTC, eugene wrote:
> The definition of this struct was taken from
> /usr/include/dmd/druntime/import/core/sys/linux/epoll.d
...
> If the reason for crash was in EpollEvent alignment,
> programs would segfaults always very soon after start,
> just right after the very first return from epoll_wait().

The struct's fine as far as libc and the kernel are concerned. 
epoll_wait is not even using those 64 bits or interpreting them 
as containing any kind of data, it's just moving them around for 
the caller to use. It's also not a hardware error to interpret 
those bits where they are as a pointer. They are however not 
64-bit aligned so D's GC is collecting objects that only they 
point to.


More information about the Digitalmars-d-learn mailing list