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
