https://bugs.freedesktop.org/show_bug.cgi?id=95329
Bug ID: 95329 Summary: Metro 2033 Redux benchmark fails to start Product: Mesa Version: git Hardware: x86-64 (AMD64) OS: Linux (All) Status: NEW Severity: normal Priority: medium Component: Drivers/Gallium/radeonsi Assignee: dri-devel@lists.freedesktop.org Reporter: 0xe2.0x9a.0x9b@gmail.com QA Contact: dri-devel@lists.freedesktop.org
Mesa: 11.3.0-devel (git-57763ee) GPU: R9 390 (dynamic power management: disabled) Linux kernel: 4.5.0 Kernel module: radeon
Steps to reproduce the issue:
1) cd ".steam/root/steamapps/common/Metro 2033 Redux" 2) mv metro metro.bin 3) ln -s benchmark.sh metro 4) Edit benchmark.sh and replace "./metro" with "./metro.bin" 5) Copy the file "user.cfg" (attached to this bug report) to directory "110000106d2b5d5" 6) Start the Steam client from command-line 7) Start Metro 2033 Redux from the Steam client
Segmentation fault (core dumped) ./metro.bin -benchmark benchmarks\benchmark33 -bench_runs 1 -output_file benchmark.log -close_on_finish
Notes: - Running "gdb metro.bin core" does not provide useful information - AMD drivers (fglrx) are working OK - Step 5 is maybe optional, but I haven't verified this
Running "valgrind --tool=callgrind" for about an hour seems to indicate that the issue may be linked to very slow shader compilation, but this is inconclusive. AMD drivers (fglrx) start the benchmark much faster.
https://bugs.freedesktop.org/show_bug.cgi?id=95329
Jan Ziak 0xe2.0x9a.0x9b@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |0xe2.0x9a.0x9b@gmail.com
--- Comment #1 from Jan Ziak 0xe2.0x9a.0x9b@gmail.com --- Created attachment 123583 --> https://bugs.freedesktop.org/attachment.cgi?id=123583&action=edit user.cfg
https://bugs.freedesktop.org/show_bug.cgi?id=95329
--- Comment #2 from Jan Ziak 0xe2.0x9a.0x9b@gmail.com --- The game itself (excluding the benchmark) runs OK with Mesa.
https://bugs.freedesktop.org/show_bug.cgi?id=95329
Jan Ziak 0xe2.0x9a.0x9b@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |NOTOURBUG
--- Comment #3 from Jan Ziak 0xe2.0x9a.0x9b@gmail.com --- The cause of the issue is in metro.bin, not in Mesa. Found via running "valgrind benchmark.sh".
The following code fixes the issue:
$ cat posix_memalign.c #include <errno.h> #include <malloc.h> #include <stdlib.h> #include <strings.h>
int posix_memalign(void **memptr, size_t alignment, size_t size) { if(alignment < 32) { alignment = 32; // Optional. Might boost memcpy(). } size *= 2; // Required void *p = memalign(alignment, size); if(!p && size) { return ENOMEM; } bzero(p, size); // Optional *memptr = p; return 0; }
$ gcc -m32 -shared -fPIC -O2 -g -Wall -Werror -std=c99 -o posix_memalign32.so posix_memalign.c $ gcc -m64 -shared -fPIC -O2 -g -Wall -Werror -std=c99 -o posix_memalign64.so posix_memalign.c $ export LD_PRELOAD="$PWD/posix_memalign32.so:$PWD/posix_memalign64.so:$LD_PRELOAD" $ .../Metro 2033 Redux/benchmark.sh
https://bugs.freedesktop.org/show_bug.cgi?id=95329
--- Comment #4 from Jan Ziak 0xe2.0x9a.0x9b@gmail.com --- Still reproducible in July 2018.
https://bugs.freedesktop.org/show_bug.cgi?id=95329
--- Comment #5 from Alexander Tsoy alexander@tsoy.me --- Another workaround is possible with newer glibc:
GLIBC_TUNABLES=glibc.malloc.check=3 ./benchmark.sh
dri-devel@lists.freedesktop.org