Date: Sat, 07 May 2022 15:42:52 +0000 From: bugzilla-noreply@freebsd.org To: ports-bugs@FreeBSD.org Subject: [Bug 263845] graphics/libglvnd: crashes on armv7 with SIGILL Message-ID: <bug-263845-7788@https.bugs.freebsd.org/bugzilla/>
next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D263845 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: x11@FreeBSD.org Reporter: fuz@fuz.su Assignee: x11@FreeBSD.org Flags: maintainer-feedback?(x11@FreeBSD.org) The following simple program crashes with SIGILL when compiled on armv7 Fre= eBSD 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 arm= v7 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 ma= tch 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 thr= ough 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 mod= e, 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 compi= led in thumb mode for some reason. --=20 You are receiving this mail because: You are the assignee for the bug.=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-263845-7788>