Some textures are not rendering correctly in apitrace

Benjamin Bellec b.bellec at gmail.com
Thu Nov 6 14:36:19 PST 2014


Hi José,

I have done quite intense testing of this evening, but I finally saw
something quite odd. So before sharing anything I need to be sure that I'm
not capturing the trace wrongly.

First of all, Serious Sam 3 is a Steam game. It's a 32-bit game. I'm on a
64-bit machine.

Here is how I build apitrace :
$ git clone https://github.com/apitrace/apitrace.git
$ cd apitrace
$ cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_GUI=TRUE
$ make -C build
$ cmake \
        -DCMAKE_C_FLAGS=-m32 \
        -DCMAKE_CXX_FLAGS=-m32 \
        -DCMAKE_EXE_LINKER_FLAGS=-m32 \
        -DCMAKE_SYSTEM_LIBRARY_PATH=/usr/lib \
        -DENABLE_GUI=FALSE \
        -H. -Bbuild32
$ make -C build32 glxtrace

So I should now have a working apitrace in /home/benjamin/apitrace

I launch steam :
$ steam
Running Steam on fedora 19 64-bit
STEAM_RUNTIME is enabled automatically
Installing breakpad exception handler for appid(steam)/version(1413917607)
Installing breakpad exception handler for appid(steam)/version(1413917607)

(steam:2986): Gtk-WARNING **: Impossible de trouver le moteur de thème dans
module_path : « adwaita »

(steam:2986): Gtk-WARNING **: Impossible de trouver le moteur de thème dans
module_path : « adwaita »
/usr/share/themes/Adwaita/gtk-2.0/gtkrc:1137: error: unexpected identifier
`direction', expected character `}'
Gtk-Message: Failed to load module "pk-gtk-module"

(steamwebhelper:2990): Gtk-WARNING **: Impossible de trouver le moteur de
thème dans module_path : « adwaita »

(steamwebhelper:2990): Gtk-WARNING **: Impossible de trouver le moteur de
thème dans module_path : « adwaita »
/usr/share/themes/Adwaita/gtk-2.0/gtkrc:1137: error: unexpected identifier
`direction', expected character `}'
Gtk-Message: Failed to load module "pk-gtk-module"
Installing breakpad exception handler for
appid(steamwebhelper)/version(20141020140456)
Installing breakpad exception handler for
appid(steamwebhelper)/version(1413813896)
[1106/231809:ERROR:nss_util.cc(1018)] Failed to load NSS libraries.
Installing breakpad exception handler for
appid(steamwebhelper)/version(20141020140456)
Installing breakpad exception handler for
appid(steamwebhelper)/version(1413813896)
Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 70:
non-double matrix element
Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 70:
non-double matrix element
Fontconfig warning: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line
78: saw unknown, expected number
Fontconfig warning: "/etc/fonts/conf.d/65-0-lohit-bengali.conf", line 32:
unknown element "langset"
Installing breakpad exception handler for appid(steam)/version(1413917607)
Installing breakpad exception handler for appid(steam)/version(1413917607)
Installing breakpad exception handler for appid(steam)/version(1413917607)
Installing breakpad exception handler for appid(steam)/version(1413917607)
Installing breakpad exception handler for appid(steam)/version(1413917607)
Installing breakpad exception handler for appid(steam)/version(1413917607)
Generating new string page texture 2: 48x256, total string texture memory
is 49,15 KB
Generating new string page texture 3: 256x256, total string texture memory
is 311,30 KB
Installing breakpad exception handler for appid(steam)/version(1413917607)
Installing breakpad exception handler for appid(steam)/version(1413917607)
Installing breakpad exception handler for appid(steam)/version(1413917607)
Adding licenses for the following package(s): 0, 11, 34, 79, 516, 984,
2481, 12328, 14840, 16549, 17838, 20883, 21089, 25544, 27644, 29136, 31974,
31975, 49307, 53394, 53820
roaming config store loaded successfully - 1484 bytes.
migrating temporary roaming config store
Installing breakpad exception handler for appid(steam)/version(1413917607)
ExecCommandLine: ""/home/benjamin/.local/share/Steam/ubuntu12_32/steam" "
System startup time: 3,47 seconds
[1106/231812:ERROR:renderer_main.cc(227)] Running without renderer sandbox
Generating new string page texture 70: 1024x256, total string texture
memory is 1,36 MB
Generating new string page texture 71: 256x256, total string texture memory
is 262,14 KB
Generating new string page texture 72: 128x256, total string texture memory
is 1,49 MB
Running Steam on fedora 19 64-bit
STEAM_RUNTIME has been set by the user to:
/home/benjamin/.local/share/Steam/ubuntu12_32/steam-runtime
Generating new string page texture 73: 32x256, total string texture memory
is 1,52 MB
ExecCommandLine: "/home/benjamin/.steam/root/ubuntu12_32/steam
steam://open/driverhelperready"
ExecSteamURL: "steam://open/driverhelperready"
Generating new string page texture 78: 64x256, total string texture memory
is 1,59 MB
Generating new string page texture 79: 256x256, total string texture memory
is 1,85 MB
Generating new string page texture 80: 128x256, total string texture memory
is 1,98 MB
Generating new string page texture 81: 384x256, total string texture memory
is 2,38 MB
Installing breakpad exception handler for appid(steam)/version(1413917607)
Generating new string page texture 91: 512x256, total string texture memory
is 2,90 MB


And in order to catch a trace of the game, I have modified the SS3
executable. The executable is located in
"/home/benjamin/.local/share/Steam/SteamApps/common/Serious Sam 3/Bin" and
is named "Sam3"

$ file "/home/benjamin/.local/share/Steam/SteamApps/common/Serious Sam
3/Bin/Sam3" gives :
ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically
linked (uses shared libs), for GNU/Linux 2.6.15,
BuildID[sha1]=0xaedfd266c84ecec32e8ff6e69f3f1eb8a5f78d46, stripped

So I moved the genuine exec :
$ mv Sam3 Sam3.old

And created a new "Sam3" shell script which is just :
#!/bin/sh
TRACE_FILE=/home/benjamin/testmesa/ss3_tmp.trace
LD_PRELOAD=/home/benjamin/apitrace/build32/wrappers/glxtrace.so
/home/benjamin/apitrace/build/apitrace trace --api gl ./Sam3.old

So now I just launch SS3 within Steam and here is the log (that I didn't
saw before) :
Game update: AppID 41070 "Serious Sam 3: BFE", ProcID 3108, IP 0.0.0.0:0
ERROR: ld.so: object
'/home/benjamin/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from
LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object
'/home/benjamin/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from
LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/home/benjamin/apitrace/build/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into
/home/benjamin/.local/share/Steam/SteamApps/common/Serious Sam
3/Bin/Sam3.old

(steam:2986): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that
doesn't believe we're it's parent.
          [snip] same message several times [/snip]
(steam:2986): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that
doesn't believe we're it's parent.
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/bash
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/getopt
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/basename
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/basename
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/basename
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/basename
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/basename
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/basename
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/basename
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/basename
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/basename
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/basename
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/sed
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/sed
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/sed
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/sed
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/sed
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/tr
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/bash
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/cat
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/cat
cat: /etc/debian_version: Aucun fichier ou dossier de ce type
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/bash
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/grep
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
apitrace: loaded into /usr/bin/cat
Setting breakpad minidump AppID = 41070
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561197975475067 [API loaded
no]
WRN:  CPU Power saving is enabled and performance governor is not used.
INF:  GameEnv API: Steam
INF:  Encoded user ID = 28d03bc7:6f628ecf
apitrace: redirecting dlopen("libGL.so.1", 0x101)
apitrace: tracing to /home/benjamin/testmesa/ss3_tmp.trace
apitrace: redirecting dlopen("libGL.so.1", 0x102)
INF:
INF:  * Desktop settings...
INF:  Color depth: 32-bit
INF:  Desktop resolution: 1680 x 1050
INF:  Fullscreen on primary display
apitrace: redirecting dlopen("libGL.so.1", 0x101)
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
lspci:
/home/benjamin/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/libpci.so.3:
version `LIBPCI_3.2' not found (required by lspci)
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
lspci:
/home/benjamin/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/libpci.so.3:
version `LIBPCI_3.2' not found (required by lspci)
ERROR: ld.so: object '/home/benjamin/apitrace/build32/wrappers/glxtrace.so'
from LD_PRELOAD cannot be preloaded: ignored.
lspci:
/home/benjamin/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/libpci.so.3:
version `LIBPCI_3.2' not found (required by lspci)
WRN:  lspci: GPU vendor and/or device ID not detected!
apitrace: warning: _gl_param_size: unknown GLenum 0x87FC
apitrace: warning: _gl_param_size: unknown GLenum 0x87FC
WRN:  [OpenGL] Unable to determine VRAM size... assuming 512 MB.
apitrace: warning: _gl_param_size: unknown GLenum 0x87FC
apitrace: warning: _gl_param_size: unknown GLenum 0x87FC
WRN:  [OpenGL] "GL_ARB_get_program_binary" extension is present but not
used because no binary formats are exposed.
INF:
INF:  Gfx API: OpenGL
INF:  Resolution: 1680 x 1050
INF:  Vendor: unknown (0x0000)
INF:  Driver: X.Org (0x0000)
INF:  Renderer: Gallium 0.4 on AMD CYPRESS
INF:  Version: 3.0 Mesa 10.3.2
INF:  Video memory size: 512 MB
INF:  Available for textures: 512 MB
INF:  Active GPU(s): 1
INF:  Unable to check for correct version of display driver!
INF:
INF:  Sfx API: OpenAL
INF:  Device: PulseAudio Default
INF:  Mixer frequency: 44100 Hz
INF:  Mixer voices: 64
INF:  Max sound sources: 15
INF:  Max total volume: 3
INF:  Speaker config: (unknown)
INF:  Environment FX: not supported
INF:
INF:  Using cheats will invalidate your score for this level and
achievements won't be awarded for the remainder of the game.
INF:  AutoDetect: Hardware values unchanged, nothing to do.
INF:  Started simulation on 'Content/SeriousSam3/Levels/Menu/Intro.wld' in
0.54 seconds.
INF:  Started simulation on 'Content/SeriousSam3/Levels/Menu/MenuLevel.wld'
in 0.26 seconds.
INF:  Started simulation on
'Content/SeriousSam3/Levels/Z5_Other/SV_Canyon.wld' in 5.47 seconds.


I suspect something is wrong in the manner I'm capturing the trace.


2014-11-05 23:19 GMT+01:00 José Fonseca <jose.r.fonseca at gmail.com>:

>
>
> On Wed, Nov 5, 2014 at 6:22 PM, Benjamin Bellec <b.bellec at gmail.com>
> wrote:
>
>> Yes I confirm that the weapons are *always* correctly rendered while
>> tracing. The corruption only appears in the apitrace.
>>
>
> Wow. This is one of the weirdest things i've seen.
>
>
>> Anyway thanks for this explanation.
>> So, do you think a hardware (physical) problem can be the origin of this ?
>> Or more probably a software one ?
>>
>
>
>
>
> Please do two more experiments:
>
> 1. Undo any previous changes to apitrace tree, apply the attached
> patch zlib.patch and see if it helps.
>
>    This will force apitrace to compress with zlib instead of snappy, so
> eliminate the chance that the bug is not on glMapBufferRange but inside
> snappy somehow.
>
> 2. Ditto with pin-thread-on-cpu.patch.
>
>   If this is a problem due to stale CPU cache this might help.
>
> 3. Ditto with glfinish.patch
>
>    If GPU is the one scribbling over then this call should make the issue
> either never happen or happen all the time.
>
> 4. try tracing the replay of the good ss3_correct_without_patch.trace like
>
>   ./apitrace trace ./glretrace -b ss3_correct_without_patch.trace
>
> a few times, and check whether the replays are as good as
> ss3_correct_without_patch.trace, or if they regress some times, like the
> real app does.  This might help determine whether the ss3 application is
> doing something special, or not.
>
> Because I was surprised, indeed, I have another problematic bug that
>> occurs, aparently with glMapBufferRange() too, see BUGZILLA #77596
>> <https://bugs.freedesktop.org/show_bug.cgi?id=77596>particularly my #7
>> comments. Maybe this is just coincidence. I'm not an OpenGL developper so I
>> don't know where the glMapBufferRange's "lenght" parameter come from ?
>> (from the game or from the OpenGL driver itself).
>>
>
> It's hard to say whether it's related. glMapBufferRange's length parameter
> is specified by the app, but the app could be computing that value based on
> glGet* queries done to the OpenGL driver, and some times there are bugs.
>
>
>>
>> To sum up, what do you think I should do now ? Fill a bug against the
>> OpenGL driver ?
>>
>>
> Let's see if the above experiments help narrow this further.
>
>
> I really hate when apitrace is not able to capture something properly --
> it's like most basic of basic functionality -- everything else (replay, UI,
> state dumping) can be fixed improved after the fact, but if the trace
> itself can't be trusted then that's showstopper.  So fingers crossed..
>
>
> Jose
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/apitrace/attachments/20141106/c6674739/attachment-0001.html>


More information about the apitrace mailing list