Program crash: GC destroys an object unexpectedly
Ali Çehreli
acehreli at yahoo.com
Tue Sep 14 20:59:14 UTC 2021
On 9/14/21 9:56 AM, eugene wrote:
> On Tuesday, 14 September 2021 at 16:43:50 UTC, jfondren wrote:
>> The misaligned pointer and the
>> reference-containing struct that vanishes on the return of your
>> corresponding function are both problems for this.
>
> where did you find 'misaligned pointer'?...
I think it's the align(1) for EpollEvent.
I was able to reproduce the segmentation fault and was seemingly able to
fix it by making the EventSource class references alive by adding a
constructor:
align (1) struct EpollEvent {
align(1):
uint event_mask;
EventSource es;
this(uint event_mask, EventSource es) {
this.event_mask = event_mask;
this.es = es;
living ~= es; // <-- Introduced this constructor for this line
}
/* just do not want to use that union, epoll_data_t */
}
// Here is the array that keeps EventSource alive:
EventSource[] living;
If that really is the fix, of course the references must be taken out of
that container when possible.
Ali
More information about the Digitalmars-d-learn
mailing list