[Bug 263845] graphics/libglvnd: crashes on armv7 with SIGILL

[email protected]
Newsgroups gmane.os.freebsd.devel.x11
Message-ID <[email protected]/bugzilla/>
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=263845

            Bug ID: 263845
           Summary: graphics/libglvnd: crashes on armv7 with SIGILL
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: [email protected]
          Reporter: [email protected]
          Assignee: [email protected]
             Flags: maintainer-feedback?([email protected])

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.

-- 
You are receiving this mail because:
You are the assignee for the bug.
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.