NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
11RC5: any EGL app (X11) crashes on exit with SIGSEGV - dlopen/atexit strikes again
Hello!
Had found that specific X11 applications (fastfetch from latest pkgsrc)
crashes on exit with SIGSEGV. It is same class of problem as reported
earlier with Mesa applications - see
https://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=60025 but
this time it is in different place.
How to reproduce:
* have NetBSD 11.0_RC5 installed with X11
* run application that uses libEGL - tested "fastfetch" from pkgsrc
* it will SIGSEGV on exit - because of atexit(3) call inside libEGL.so
library loaded via dlopen(3) - which is not supported on NetBSD.
Details in GDB session:
gdb /usr/pkg/bin/fastfetch.
+break main
Breakpoint 1 at 0x2bf57: file
/home/ansible/pkgsrc/sysutils/fastfetch/work/fastfetch-2.64.2/src/fastfetch.c,
line 831.
+run
Starting program: /usr/pkg/bin/fastfetch
Breakpoint 1, main (argc=1, argv=0x7f7fff6f39f8) at
/home/ansible/pkgsrc/sysutils/fastfetch/work/fastfetch-2.64.2/src/fastfetch.c:831
831 int main(int argc, char** argv) {
+break dlopen
Breakpoint 2 at 0x7adb3ee1b2f0: dlopen. (2 locations)
+c
Continuing.
Breakpoint 2.2, dlopen (name=name@entry=0x7f7fff6f2b70
"nss_compat.so.0", mode=mode@entry=513) at
/usr/src/libexec/ld.elf_so/rtld.c:1090
1090 {
+break atexit
Breakpoint 3 at 0x7adb3ef1164b: file /usr/src/lib/libc/stdlib/atexit.c,
line 265.
+c
Continuing.
Breakpoint 2.2, dlopen (name=name@entry=0x7f7fff6f2b70 "nss_nis.so.0",
mode=mode@entry=513) at /usr/src/libexec/ld.elf_so/rtld.c:1090
1090 {
+c
Continuing.
Breakpoint 2.2, dlopen (name=name@entry=0x7f7fff6f2b70 "nss_files.so.0",
mode=mode@entry=513) at /usr/src/libexec/ld.elf_so/rtld.c:1090
1090 {
+c
Continuing.
Breakpoint 2.2, dlopen (name=name@entry=0x7f7fff6f2b70 "nss_dns.so.0",
mode=mode@entry=513) at /usr/src/libexec/ld.elf_so/rtld.c:1090
1090 {
+c
Continuing.
Breakpoint 3, atexit (func=0xe76dda <ffDestroyInstance>) at
/usr/src/lib/libc/stdlib/atexit.c:265
265 return (__cxa_atexit_internal((void (*)(void *))func, NULL, NULL));
+bt
#0 atexit (func=0xe76dda <ffDestroyInstance>) at
/usr/src/lib/libc/stdlib/atexit.c:265
#1 0x0000000000e6df7b in main (argc=1, argv=0x7f7fff6f39f8) at
/home/ansible/pkgsrc/sysutils/fastfetch/work/fastfetch-2.64.2/src/fastfetch.c:833
+c
Continuing.
Breakpoint 2.2, dlopen (name=0x11b02d5 "libxcb-randr.so", mode=1) at
/usr/src/libexec/ld.elf_so/rtld.c:1090
1090 {
+c
Continuing.
Breakpoint 2.2, dlopen (name=0x11b0f6b "libXrandr.so", mode=1) at
/usr/src/libexec/ld.elf_so/rtld.c:1090
1090 {
+c
Continuing.
Breakpoint 2.2, dlopen (name=0x11af6b4 "libdrm.so", mode=1) at
/usr/src/libexec/ld.elf_so/rtld.c:1090
1090 {
+c
Continuing.
Breakpoint 2.2, dlopen (name=0x114afd1 "libEGL.so", mode=1) at
/usr/src/libexec/ld.elf_so/rtld.c:1090
1090 {
+c
Continuing.
Breakpoint 3, atexit (func=func@entry=0x7adb3ea9be60 <_eglAtExit>) at
/usr/src/lib/libc/stdlib/atexit.c:265
265 return (__cxa_atexit_internal((void (*)(void *))func, NULL, NULL));
+bt
#0 atexit (func=func@entry=0x7adb3ea9be60 <_eglAtExit>) at
/usr/src/lib/libc/stdlib/atexit.c:265
#1 0x00007adb3ea9bf33 in _eglAddAtExitCall
(func=func@entry=0x7adb3eaa9f7c <_eglFiniTSD>) at
/usr/xsrc/external/mit/MesaLib/dist/src/egl/main/eglglobals.c:142
#2 0x00007adb3eaaa05a in _eglInitTSD () at
/usr/xsrc/external/mit/MesaLib/dist/src/egl/main/eglcurrent.c:94
#3 _eglCheckedGetTSD () at
/usr/xsrc/external/mit/MesaLib/dist/src/egl/main/eglcurrent.c:151
#4 _eglGetCurrentThread () at
/usr/xsrc/external/mit/MesaLib/dist/src/egl/main/eglcurrent.c:170
#5 0x00007adb3ea9d7cb in _eglSetFuncName (object=0x0, objectType=12344,
disp=0x0, funcName=0x7adb3eab0f70 <__func__.42> "eglGetProcAddress") at
/usr/xsrc/external/mit/MesaLib/dist/src/egl/main/eglapi.c:270
#6 eglGetProcAddress (procname=0x114af30 "glGetString") at
/usr/xsrc/external/mit/MesaLib/dist/src/egl/main/eglapi.c:2732
#7 0x0000000000e93ff1 in eglHandleData (result=0x7f7fff6f3130,
data=0x7f7fff6f3030) at
/home/ansible/pkgsrc/sysutils/fastfetch/work/fastfetch-2.64.2/src/detection/opengl/opengl_shared.c:137
#8 0x0000000000e943f8 in ffOpenGLDetectByEGL (result=0x7f7fff6f3130) at
/home/ansible/pkgsrc/sysutils/fastfetch/work/fastfetch-2.64.2/src/detection/opengl/opengl_shared.c:206
#9 0x0000000001069c9b in ffDetectOpenGL (options=0x7f7fff6f3180,
result=0x7f7fff6f3130) at
/home/ansible/pkgsrc/sysutils/fastfetch/work/fastfetch-2.64.2/src/detection/opengl/opengl_linux.c:183
#10 0x0000000000e9151c in detectByOpenGL (gpus=0x7f7fff6f3290) at
/home/ansible/pkgsrc/sysutils/fastfetch/work/fastfetch-2.64.2/src/detection/gpu/gpu.c:92
#11 0x0000000000e919cd in ffDetectGPU (options=0x7f7fff6f35e0,
result=0x7f7fff6f3290) at
/home/ansible/pkgsrc/sysutils/fastfetch/work/fastfetch-2.64.2/src/detection/gpu/gpu.c:197
#12 0x0000000000f12119 in ffPrintGPU (options=0x7f7fff6f35e0) at
/home/ansible/pkgsrc/sysutils/fastfetch/work/fastfetch-2.64.2/src/modules/gpu/gpu.c:169
#13 0x0000000000e71a80 in parseStructureCommand (data=0x7f7fff6f3950,
line=0x7adb3ed4527d "GPU", fn=0xe70be3 <genJsonResult>) at
/home/ansible/pkgsrc/sysutils/fastfetch/work/fastfetch-2.64.2/src/common/impl/commandoption.c:183
#14 0x0000000000e72969 in ffPrintCommandOption (data=0x7f7fff6f3950) at
/home/ansible/pkgsrc/sysutils/fastfetch/work/fastfetch-2.64.2/src/common/impl/commandoption.c:218
#15 0x0000000000e6d5c1 in run (data=0x7f7fff6f3950) at
/home/ansible/pkgsrc/sysutils/fastfetch/work/fastfetch-2.64.2/src/fastfetch.c:764
#16 0x0000000000e6e08b in main (argc=1, argv=0x7f7fff6f39f8) at
/home/ansible/pkgsrc/sysutils/fastfetch/work/fastfetch-2.64.2/src/fastfetch.c:854
+frame 1
#1 0x00007adb3ea9bf33 in _eglAddAtExitCall
(func=func@entry=0x7adb3eaa9f7c <_eglFiniTSD>) at
/usr/xsrc/external/mit/MesaLib/dist/src/egl/main/eglglobals.c:142
142 atexit(_eglAtExit);
+l
137
138 #if defined(HAVE_NOATEXIT)
139 registered = EGL_TRUE;
140 #else
141 if (!registered) {
142 atexit(_eglAtExit);
143 registered = EGL_TRUE;
144 }
145 #endif
146
To me it looks like error that macro HAVE_NOATEXIT is not actually
defined (but should be) - so atexit(3) is called accidentally.
References:
*
https://cvsweb.netbsd.org/bsdweb.cgi/xsrc/external/mit/MesaLib/dist/src/egl/main/eglglobals.c.diff?r1=1.7;r2=1.8;f=h
* https://marc.info/?t=176604443000001&r=1&w=2
* https://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=60025
Best regards
--Henryk Paluch
Home |
Main Index |
Thread Index |
Old Index