On Mon, 22 Dec 2025, Henryk Paluch wrote:

2. Crash seems to occurs only in /usr/X11R7/lib/modules/dri/swrast_dri.so (swrast driver). When I tried "modesetting" Intel Broxton "HD Graphics 500 (APL 2)") it works (after several unrelated tweaks)


Correct. I first noticed this months ago with QEMU (-HEAD). It still crashes
on every exit for me because I don't have working DRMKMS on my HW. (I spent
a weekend some time back poking around, and after I'd figured out what the
issue was(--func. call to an unmapped object--I didn't go looking into the
how and why until your recent email.)

So now I have 2 mysteries:


Taking this in the reverse order,

2. why my gdb does not catch __destructor__ call - is it called or not?


If you see the destructor func. code, it's all conditional on whether
`api_init_mask' is set or not; and, I can't find it being set anywhere.

The compiler's seen this and just not added the destructor to the `.fini_array'
section. (Which is what ld.elf_so(8) walks -- calling destructor functions
as it goes.)

On some OSes and arches., and even depending on the object in question (shared
or non-shared object), the destructor functions are instead in a `.dtors'
section.

1. why there is used both __destructor__  and atexit(3) in Mesa's context.c


Prolly going belt-and-suspenders because of all the above reasons.

-RVP

Reply via email to