Dear Maintainer, I just tried to reproduce the issue. This segfault in GL_shadow happens here:
Thread 1 "gl_shadow" received signal SIGSEGV, Segmentation fault. 0x00005555555579f6 in LoadTexture (tex_name=0x7fffffffe120 "tex.png") at src/benchmarks/GL_shadow/object.c:196 196 if ((tex_img->format)->Amask) (gdb) bt #0 0x000055909d0d59f6 in LoadTexture (tex_name=0x7ffd0d909650 "tex.png") at src/benchmarks/GL_shadow/object.c:196 #1 0x000055909d0d528c in LoadObject (objfile=0x55909d0d8076 "cube.obj") at src/benchmarks/GL_shadow/object.c:83 #2 0x000055909d0d5ed8 in InitObject (objfile=0x55909d0d8076 "cube.obj") at src/benchmarks/GL_shadow/object.c:268 #3 0x000055909d0d4a89 in main (argc=4, argv=0x7ffd0d909ad8) at src/benchmarks/GL_shadow/main.c:121 This looks like another case of truncated pointer because of implicit prototypes, which unfortunately on amd64 default to int (4 bytes) and therefore fail when a pointer (8 bytes) is returned by a function. This warning seems to be contained in the build logs: gcc -o src/benchmarks/GL_shadow/object.o -c -g -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/SDL src/benchmarks/GL_shadow/object.c src/benchmarks/GL_shadow/object.c: In function 'LoadTexture': src/benchmarks/GL_shadow/object.c:192:31: warning: implicit declaration of function 'IMG_Load' [-Wimplicit-function-declaration] if(tex_img = (SDL_Surface *) IMG_Load(tex_name)) { ^~~~~~~~ src/benchmarks/GL_shadow/object.c:192:15: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] if(tex_img = (SDL_Surface *) IMG_Load(tex_name)) { ^ Attached patch adds compiler flags and includes to avoid implicit prototypes. Kind regards, Bernhard > gdb run is not very helpful due lack of debugging symbols. PS. @Witold Baryluk: Also a failing stack can be of some use when the issue is tried to be reproduced. And the debug symbols are stored in a different repository. You find some information at https://wiki.debian.org/HowToGetABacktrace
Description: Force prototypes --- Author: Bernhard Ãbelacker <bernha...@mailbox.org> Bug-Debian: https://bugs.debian.org/913174 Forwarded: no Last-Update: 2018-11-09 --- globs-0.2.0~svn50.orig/src/benchmarks/GLSL_parallax/extra.c +++ globs-0.2.0~svn50/src/benchmarks/GLSL_parallax/extra.c @@ -17,6 +17,8 @@ */ +#define GL_GLEXT_PROTOTYPES + #include <stdio.h> #include <stdlib.h> #include <math.h> @@ -26,6 +28,7 @@ #include <GL/glext.h> #include "init.h" +#include "extra.h" void UpdateLight(struct Light *l) { --- globs-0.2.0~svn50.orig/src/benchmarks/GLSL_parallax/init.c +++ globs-0.2.0~svn50/src/benchmarks/GLSL_parallax/init.c @@ -17,15 +17,19 @@ */ +#define GL_GLEXT_PROTOTYPES + #include <stdio.h> #include <stdlib.h> #include <SDL/SDL.h> +#include <SDL/SDL_image.h> #include <GL/gl.h> #include <GL/glext.h> #include "init.h" #include "textfile.h" +#include "extra.h" void InitLighting(struct Light *l, struct Material *m) --- globs-0.2.0~svn50.orig/src/benchmarks/GLSL_parallax/main.c +++ globs-0.2.0~svn50/src/benchmarks/GLSL_parallax/main.c @@ -16,6 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#define GL_GLEXT_PROTOTYPES #include <stdio.h> #include <stdlib.h> --- globs-0.2.0~svn50.orig/src/benchmarks/GLSL_parallax/textfile.c +++ globs-0.2.0~svn50/src/benchmarks/GLSL_parallax/textfile.c @@ -16,6 +16,7 @@ #include <string.h> #include <sys/types.h> #include <unistd.h> +#include "textfile.h" char *textFileRead(char *fn) { --- globs-0.2.0~svn50.orig/src/benchmarks/GL_shadow/object.c +++ globs-0.2.0~svn50/src/benchmarks/GL_shadow/object.c @@ -8,6 +8,7 @@ #include <stdlib.h> #include <string.h> #include <SDL/SDL.h> +#include <SDL/SDL_image.h> #include <GL/gl.h> #include "object.h" --- globs-0.2.0~svn50.orig/src/benchmarks/GL_smoke/particle.c +++ globs-0.2.0~svn50/src/benchmarks/GL_smoke/particle.c @@ -4,6 +4,7 @@ #include <stdlib.h> #include <SDL/SDL.h> +#include <SDL/SDL_image.h> #include <GL/gl.h> #include "particle.h" --- globs-0.2.0~svn50.orig/src/benchmarks/SConstruct +++ globs-0.2.0~svn50/src/benchmarks/SConstruct @@ -13,7 +13,7 @@ except SCons.Errors.UserError: install_dir = os.path.join(root, prefix, 'share/globs/benchmarks') # create build environment -env = Environment(CCFLAGS = '-g') +env = Environment(CCFLAGS = '-g -Werror=missing-prototypes -Werror=implicit-function-declaration') # determine compiler and linker flags for SDL env.ParseConfig('sdl-config --cflags') --- globs-0.2.0~svn50.orig/src/benchmarks/check_time.c +++ globs-0.2.0~svn50/src/benchmarks/check_time.c @@ -1,5 +1,6 @@ #include <stdio.h> #include <sys/time.h> +#include "check_time.h" long int check_time(int time) { --- globs-0.2.0~svn50.orig/src/benchmarks/get_options.c +++ globs-0.2.0~svn50/src/benchmarks/get_options.c @@ -1,3 +1,4 @@ +#include <stdlib.h> #include <getopt.h> #include "get_options.h"
apt update apt install dpkg-dev devscripts xserver-xorg lightdm openbox xterm systemd-coredump gdb mc mesa-utils globs globs-dbgsym libsdl-image1.2-dbgsym apt build-dep globs systemctl start lightdm mkdir globs/orig -p cd globs/orig apt source globs cd ../.. mkdir libsdl-image1.2/orig -p cd libsdl-image1.2/orig apt source libsdl-image1.2 cd ../.. export DISPLAY=:0 benutzer@debian:~$ /usr/bin/globs Erstelle /home/benutzer/.globs.db Segmentation fault (core dumped) # no output in dmesg root@debian:~# coredumpctl gdb PID: 8234 (gl_shadow) UID: 1000 (benutzer) GID: 1000 (benutzer) Signal: 11 (SEGV) Timestamp: Thu 2018-11-08 03:05:01 CET (2min 10s ago) Command Line: ./gl_shadow -w640 -h480 -t5 Executable: /usr/lib/globs/benchmarks/GL_shadow/gl_shadow Control Group: /user.slice/user-1000.slice/session-6.scope Unit: session-6.scope Slice: user-1000.slice Session: 6 Owner UID: 1000 (benutzer) Boot ID: f5d327a9af0e4b53a9a429dd392407b7 Machine ID: 32f43b50ac8c4b21941bc0b02f8e7811 Hostname: debian Storage: /var/lib/systemd/coredump/core.gl_shadow.1000.f5d327a9af0e4b53a9a429dd392407b7.8234.1541642701000000.lz4 Message: Process 8234 (gl_shadow) of user 1000 dumped core. Stack trace of thread 8234: #0 0x000055909d0d59f6 n/a (gl_shadow) #1 0x000055909d0d528c n/a (gl_shadow) #2 0x000055909d0d5ed8 n/a (gl_shadow) #3 0x000055909d0d4a89 main (gl_shadow) #4 0x00007ff19bb9ab17 __libc_start_main (libc.so.6) #5 0x000055909d0d44fa n/a (gl_shadow) GNU gdb (Debian 8.1-4+b1) 8.1 Copyright (C) 2018 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from /usr/lib/globs/benchmarks/GL_shadow/gl_shadow...Reading symbols from /usr/lib/debug/.build-id/a1/accdbb1420b6c36f5c0aeccc0729083b738ea1.debug...done. done. [New LWP 8234] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Core was generated by `./gl_shadow -w640 -h480 -t5'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x000055909d0d59f6 in LoadTexture (tex_name=0x7ffd0d909650 "tex.png") at src/benchmarks/GL_shadow/object.c:196 196 src/benchmarks/GL_shadow/object.c: Datei oder Verzeichnis nicht gefunden. (gdb) bt #0 0x000055909d0d59f6 in LoadTexture (tex_name=0x7ffd0d909650 "tex.png") at src/benchmarks/GL_shadow/object.c:196 #1 0x000055909d0d528c in LoadObject (objfile=0x55909d0d8076 "cube.obj") at src/benchmarks/GL_shadow/object.c:83 #2 0x000055909d0d5ed8 in InitObject (objfile=0x55909d0d8076 "cube.obj") at src/benchmarks/GL_shadow/object.c:268 #3 0x000055909d0d4a89 in main (argc=4, argv=0x7ffd0d909ad8) at src/benchmarks/GL_shadow/main.c:121 (gdb) directory /home/benutzer/globs/orig/globs-0.2.0~svn50 Source directories searched: /home/benutzer/globs/orig/globs-0.2.0~svn50:$cdir:$cwd (gdb) up #1 0x000055909d0d528c in LoadObject (objfile=0x55909d0d8076 "cube.obj") at src/benchmarks/GL_shadow/object.c:83 83 obj->TexId = LoadTexture(texbuf); (gdb) down #0 0x000055909d0d59f6 in LoadTexture (tex_name=0x7ffd0d909650 "tex.png") at src/benchmarks/GL_shadow/object.c:196 196 if ((tex_img->format)->Amask) (gdb) list LoadTexture 183 184 /* Simple code to load a texture and return its id */ 185 GLuint LoadTexture(char *tex_name) 186 { 187 GLuint tex_num; 188 189 SDL_Surface *tex_img; 190 glGenTextures(1, &tex_num); 191 192 if(tex_img = (SDL_Surface *) IMG_Load(tex_name)) { 193 glBindTexture(GL_TEXTURE_2D, tex_num); 194 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 195 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 196 if ((tex_img->format)->Amask) 197 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex_img->w, tex_img->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, tex_img->pixels); 198 else 199 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, tex_img->w, tex_img->h, 0, GL_RGB, GL_UNSIGNED_BYTE, tex_img->pixels); 200 SDL_FreeSurface (tex_img); 201 } 202 else 203 printf("Texture not found!\n"); 204 205 return tex_num; 206 } (gdb) print/x tex_img $1 = 0xffffffff9e93e860 (gdb) print/x tex_img->format Cannot access memory at address 0xffffffff9e93e868 ################### benutzer@debian:/usr/lib/globs/benchmarks/GL_shadow$ gdb -q --args ./gl_shadow -w640 -h480 -t5 Reading symbols from ./gl_shadow...Reading symbols from /usr/lib/debug/.build-id/a1/accdbb1420b6c36f5c0aeccc0729083b738ea1.debug...done. done. (gdb) set pagination off (gdb) set width 0 (gdb) directory /home/benutzer/globs/orig/globs-0.2.0~svn50 Source directories searched: /home/benutzer/globs/orig/globs-0.2.0~svn50:$cdir:$cwd (gdb) directory /home/benutzer/libsdl-image1.2/orig/sdl-image1.2-1.2.12 Source directories searched: /home/benutzer/libsdl-image1.2/orig/sdl-image1.2-1.2.12:/home/benutzer/globs/orig/globs-0.2.0~svn50:$cdir:$cwd (gdb) b IMG_LoadTyped_RW Function "IMG_LoadTyped_RW" not defined. Make breakpoint pending on future shared library load? (y or [n]) y Breakpoint 1 (IMG_LoadTyped_RW) pending. (gdb) run Starting program: /usr/lib/globs/benchmarks/GL_shadow/gl_shadow -w640 -h480 -t5 [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [New Thread 0x7fffed801700 (LWP 22201)] [New Thread 0x7fffed000700 (LWP 22202)] [New Thread 0x7fffe7fff700 (LWP 22203)] [New Thread 0x7fffe77fe700 (LWP 22204)] [New Thread 0x7fffe6ffd700 (LWP 22205)] [New Thread 0x7fffe67fc700 (LWP 22206)] [New Thread 0x7fffe5ffb700 (LWP 22207)] [New Thread 0x7fffe57fa700 (LWP 22208)] Thread 1 "gl_shadow" hit Breakpoint 1, IMG_LoadTyped_RW (src=0x5555558e6760, freesrc=1, type=0x7fffffffe124 "png") at IMG.c:164 164 if ( src == NULL ) { (gdb) finish Run till exit from #0 IMG_LoadTyped_RW (src=0x5555558e6760, freesrc=1, type=0x7fffffffe124 "png") at IMG.c:164 0x00005555555579aa in LoadTexture (tex_name=0x7fffffffe120 "tex.png") at src/benchmarks/GL_shadow/object.c:192 192 if(tex_img = (SDL_Surface *) IMG_Load(tex_name)) { Value returned is $1 = (SDL_Surface *) 0x5555558dea20 (gdb) bt #0 0x00005555555579aa in LoadTexture (tex_name=0x7fffffffe120 "tex.png") at src/benchmarks/GL_shadow/object.c:192 #1 0x000055555555728c in LoadObject (objfile=0x55555555a076 "cube.obj") at src/benchmarks/GL_shadow/object.c:83 #2 0x0000555555557ed8 in InitObject (objfile=0x55555555a076 "cube.obj") at src/benchmarks/GL_shadow/object.c:268 #3 0x0000555555556a89 in main (argc=4, argv=0x7fffffffe5a8) at src/benchmarks/GL_shadow/main.c:121 (gdb) disassemble LoadTexture,LoadTexture+0x40 Dump of assembler code from 0x55555555797c to 0x5555555579bc: 0x000055555555797c <LoadTexture+0>: push %rbp 0x000055555555797d <LoadTexture+1>: mov %rsp,%rbp 0x0000555555557980 <LoadTexture+4>: sub $0x20,%rsp 0x0000555555557984 <LoadTexture+8>: mov %rdi,-0x18(%rbp) 0x0000555555557988 <LoadTexture+12>: lea -0xc(%rbp),%rax 0x000055555555798c <LoadTexture+16>: mov %rax,%rsi 0x000055555555798f <LoadTexture+19>: mov $0x1,%edi 0x0000555555557994 <LoadTexture+24>: callq 0x555555556350 <glGenTextures@plt> 0x0000555555557999 <LoadTexture+29>: mov -0x18(%rbp),%rax 0x000055555555799d <LoadTexture+33>: mov %rax,%rdi 0x00005555555579a0 <LoadTexture+36>: mov $0x0,%eax 0x00005555555579a5 <LoadTexture+41>: callq 0x555555556480 <IMG_Load@plt> => 0x00005555555579aa <LoadTexture+46>: cltq 0x00005555555579ac <LoadTexture+48>: mov %rax,-0x8(%rbp) 0x00005555555579b0 <LoadTexture+52>: cmpq $0x0,-0x8(%rbp) 0x00005555555579b5 <LoadTexture+57>: je 0x555555557aa1 <LoadTexture+293> 0x00005555555579bb <LoadTexture+63>: mov -0xc(%rbp),%eax End of assembler dump. (gdb) info reg rax 0x5555558dea20 93824995944992 rbx 0x5555558def50 93824995946320 rcx 0x3 3 rdx 0x0 0 rsi 0x55555555d010 93824992268304 rdi 0x1 1 rbp 0x7fffffffdf50 0x7fffffffdf50 rsp 0x7fffffffdf30 0x7fffffffdf30 r8 0x0 0 r9 0x7fffffffd954 140737488345428 r10 0x187 391 r11 0x7ffff7f3d340 140737353339712 r12 0x5555555564d0 93824992240848 r13 0x7fffffffe5a0 140737488348576 r14 0x0 0 r15 0x0 0 rip 0x5555555579aa 0x5555555579aa <LoadTexture+46> eflags 0x202 [ IF ] cs 0x33 51 ss 0x2b 43 ds 0x0 0 es 0x0 0 fs 0x0 0 gs 0x0 0 (gdb) display/i $pc 1: x/i $pc => 0x5555555579aa <LoadTexture+46>: cltq (gdb) display tex_img 3: tex_img = (SDL_Surface *) 0x5555555564d0 <_start> (gdb) stepi 0x00005555555579ac 192 if(tex_img = (SDL_Surface *) IMG_Load(tex_name)) { 1: x/i $pc => 0x5555555579ac <LoadTexture+48>: mov %rax,-0x8(%rbp) 3: tex_img = (SDL_Surface *) 0x5555555564d0 <_start> (gdb) 0x00005555555579b0 192 if(tex_img = (SDL_Surface *) IMG_Load(tex_name)) { 1: x/i $pc => 0x5555555579b0 <LoadTexture+52>: cmpq $0x0,-0x8(%rbp) 3: tex_img = (SDL_Surface *) 0x558dea20 (gdb) print sizeof(tex_img) $2 = 8 (gdb) print IMG_Load $3 = {SDL_Surface *(const char *)} 0x7ffff7f0b670 <IMG_Load> (gdb) list LoadTexture 183 184 /* Simple code to load a texture and return its id */ 185 GLuint LoadTexture(char *tex_name) 186 { 187 GLuint tex_num; 188 189 SDL_Surface *tex_img; 190 glGenTextures(1, &tex_num); 191 192 if(tex_img = (SDL_Surface *) IMG_Load(tex_name)) { 193 glBindTexture(GL_TEXTURE_2D, tex_num); 194 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 195 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 196 if ((tex_img->format)->Amask) 197 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex_img->w, tex_img->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, tex_img->pixels); 198 else 199 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, tex_img->w, tex_img->h, 0, GL_RGB, GL_UNSIGNED_BYTE, tex_img->pixels); 200 SDL_FreeSurface (tex_img); 201 } 202 else 203 printf("Texture not found!\n"); 204 205 return tex_num; 206 } (gdb) next 193 glBindTexture(GL_TEXTURE_2D, tex_num); 1: x/i $pc => 0x5555555579bb <LoadTexture+63>: mov -0xc(%rbp),%eax 3: tex_img = (SDL_Surface *) 0x558dea20 (gdb) 194 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 1: x/i $pc => 0x5555555579ca <LoadTexture+78>: mov $0x2601,%edx 3: tex_img = (SDL_Surface *) 0x558dea20 (gdb) 195 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 1: x/i $pc => 0x5555555579de <LoadTexture+98>: mov $0x2601,%edx 3: tex_img = (SDL_Surface *) 0x558dea20 (gdb) 196 if ((tex_img->format)->Amask) 1: x/i $pc => 0x5555555579f2 <LoadTexture+118>: mov -0x8(%rbp),%rax 3: tex_img = (SDL_Surface *) 0x558dea20 (gdb) print tex_img $4 = (SDL_Surface *) 0x558dea20 (gdb) print tex_img->format Cannot access memory at address 0x558dea28 (gdb) next Thread 1 "gl_shadow" received signal SIGSEGV, Segmentation fault. 0x00005555555579f6 in LoadTexture (tex_name=0x7fffffffe120 "tex.png") at src/benchmarks/GL_shadow/object.c:196 196 if ((tex_img->format)->Amask) 1: x/i $pc => 0x5555555579f6 <LoadTexture+122>: mov 0x8(%rax),%rax 3: tex_img = (SDL_Surface *) 0x558dea20 ################### https://tests.reproducible-builds.org/debian/rbuild/unstable/amd64/globs_0.2.0~svn50-5.rbuild.log.gz gcc -o src/benchmarks/GL_shadow/object.o -c -g -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/SDL src/benchmarks/GL_shadow/object.c src/benchmarks/GL_shadow/object.c: In function 'LoadTexture': src/benchmarks/GL_shadow/object.c:192:31: warning: implicit declaration of function 'IMG_Load' [-Wimplicit-function-declaration] if(tex_img = (SDL_Surface *) IMG_Load(tex_name)) { ^~~~~~~~ src/benchmarks/GL_shadow/object.c:192:15: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] if(tex_img = (SDL_Surface *) IMG_Load(tex_name)) { ^ ################### cd /usr/lib/globs/benchmarks/GL_shadow gdb -q --args ./gl_shadow -w640 -h480 -t5 set pagination off set width 0 directory /home/benutzer/globs/orig/globs-0.2.0~svn50 directory /home/benutzer/libsdl-image1.2/orig/sdl-image1.2-1.2.12 b IMG_LoadTyped_RW y run #b object.c:192 #b IMG_Load