maintainer-feedback requested: [Bug 263845] graphics/libglvnd: crashes on armv7 with SIGILL

[email protected]
Newsgroups gmane.os.freebsd.devel.x11
Message-ID <[email protected]/bugzilla/>
Bugzilla Automation <[email protected]> has asked freebsd-x11 (Nobody)
<[email protected]> for maintainer-feedback:
Bug 263845: graphics/libglvnd: crashes on armv7 with SIGILL
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=263845



--- Description ---
The following simple program crashes with SIGILL when compiled on armv7 FreeBSD
13:

#include <GL/gl.h>
int main()
{
	glGetError();
}

I am compiling with "cc -I/usr/local/lib -L/usr/local/include test.c -lGL.  My
package version is libglvnd 1.4.0_1 and I've tested this both on native armv7
and in an armv7 jail running on arm64.

The behaviour is extremely strange.  I am aware that glvnd does some sort of
dispatch logic to get to the platform's native driver, but this does not match
what I see.

When I try to debug this code, it seems that it is somehow iterating through
the entirety of the the libGL API, only to then crash after having gone through
glWriteMaskEXT.  I do not understand what the purpose of this is and it does
not seem to match any code I found in the library.

Digging further into this, it seems that the library is compiled in ARM mode,
but executed in Thumb mode for some reason (wtf).  I suspect this might be
because the source file src/GLdispatch/vnd-glapi/entry_armv7_tsd.c uses
".thumb_func" to label the stub entry points, but then they don't get compiled
in thumb mode for some reason.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.