blob: 2c35bac7bed77b871a14138266946610a9a59178 [file] [log] [blame]
José Fonseca2208f5a2015-02-05 12:05:11 +00001# Reporting bugs #
José Fonseca05ba4192011-09-17 21:18:57 +01002
José Fonseca2f634d52011-10-25 09:57:01 +01003Before reporting, please skim through the known issues below.
José Fonseca05ba4192011-09-17 21:18:57 +01004
José Fonseca2f634d52011-10-25 09:57:01 +01005Report any issues on [github](https://github.com/apitrace/apitrace/issues),
6always including the following information:
José Fonseca05ba4192011-09-17 21:18:57 +01007
8* operating system name and version
9
10* OpenGL/D3D driver name and version
11
12
José Fonseca2208f5a2015-02-05 12:05:11 +000013# Known issues #
José Fonseca2f634d52011-10-25 09:57:01 +010014
15These are issues that the developers are already aware of, but for which there
16is no immediate plan to address them, because either:
17
18* they stem from architectural limitations that are difficult to overcome
19 and/or time-consuming;
20
21* they are corners cases that are thought to be of very little practical use;
22
23* merely lack of time/opportunity.
24
25That said, feel free to file an issue and/or send an email to the mailing list
26if:
27
José Fonseca2cca1ad2013-06-14 11:14:06 +010028* you want discuss the rationale, propose your ideas on how to address it, or
29 volunteer to work on it;
José Fonseca2f634d52011-10-25 09:57:01 +010030
José Fonseca2cca1ad2013-06-14 11:14:06 +010031* a known issue is important for you and you would like to see it addressed
32 sooner rather than later.
José Fonseca2f634d52011-10-25 09:57:01 +010033
34
José Fonseca2208f5a2015-02-05 12:05:11 +000035## Tracing ##
José Fonseca2f634d52011-10-25 09:57:01 +010036
37* Fake calls may be emitted in the trace, in order to provide complete
38 information for retracing. The typical case is OpenGL vertex arrays in user
39 memory (as opposed to VBOs): where glXxxPointer calls will be deferred,
40 glInterleavedArrays will be decomposed, etc.
41
42 This should not affect the rendered output, but it may use different paths in
43 the OpenGL driver, exercising different paths and with different performance
44 characteristics.
45
46 There is no way to distinguish the fake calls from those actually
47 made by the application yet.
48
José Fonseca4fcb5dd2013-06-11 16:11:40 +010049* Huge traces will be generated for applications that make extensive use of
50 immediate mode drawing (ie., glBegin/glEnd), use vertex/element arrays in
José Fonseca2cca1ad2013-06-14 11:14:06 +010051 user memory, or generate a lot of dynamic vertex data per frame. This is
52 because large quantities of (often redundant) data will be recorded over and
53 over; and although the traces are compressed, the compression algorithms used
54 aim a good performance/compression balance, hence fail to identify and remove
55 the redundancy at this scale.
José Fonseca4fcb5dd2013-06-11 16:11:40 +010056
57 However, this should not be a problem for modern OpenGL applications that
58 make an efficient use of VBOs and vertex shaders.
59
José Fonseca2f634d52011-10-25 09:57:01 +010060* On MacOSX, the internal OpenGL calls done by GLU are not traced yet.
61
62
José Fonseca2208f5a2015-02-05 12:05:11 +000063## Retracing ##
José Fonseca2f634d52011-10-25 09:57:01 +010064
José Fonseca4fcb5dd2013-06-11 16:11:40 +010065* Replaying can take substantially more CPU due to the overhead of reading the
66 trace file from disk.
67
68 However, the overhead should not be significant for modern 3D applications
69 that do efficient use of VBOs and vertex shaders. The communication between
70 CPU to GPU can easily be a bottleneck on the powerful discrete GPUs of
71 nowadays, and trace overhead tend to be propotional so it is not a
72 coincidence that applications that are optimized for modern GPUs will also be
73 traced and replayed efficiently.
74
José Fonseca2f634d52011-10-25 09:57:01 +010075* glretrace needs to infer window sizes from glViewport calls, because calls
76 that create/resize windows happen outside of OpenGL and are not traced.
77 Therefore window will be missing if the application relies on the default
78 viewport instead of explicitly invoking glViewport; or it will to too big if
79 the window is shrunk. Most apps call glViewport before rendering.
80
81* OS specific OpenGL APIs (WGL, GLX, CGL, etc), are not retraced literally, but
82 instead partially emulated. This is by design, to allow traces to be
83 retraced on any OS, as the focus is on the OS-independent parts of OpenGL API.
84
85* There is no guarantee that the same visual that was used on tracing will be
86 used for retracing OpenGL. Actually currently, glretrace will always choose
87 a standard 32bit RGBA, 24bit depth, 8bit alpha, double buffer visual. Unless
88 overridden on command line.
89
José Fonseca2cca1ad2013-06-14 11:14:06 +010090* OpenGL context sharing is not fully respected -- all contexts are assumed to
91 share state. This is by far the most common case though.
José Fonseca2f634d52011-10-25 09:57:01 +010092
93
José Fonseca2208f5a2015-02-05 12:05:11 +000094## GUI ##
José Fonseca2f634d52011-10-25 09:57:01 +010095
96* Not all types of arguments can be edited.
97
98
99
José Fonseca2208f5a2015-02-05 12:05:11 +0000100# Proprietary/confidential applications #
José Fonseca05ba4192011-09-17 21:18:57 +0100101
102Issues should be preferably filed on github to facilitate collaborative
103development and for future reference.
104
105Access to applications source code is not required -- binaries are sufficient.
106
107If the bug happens with a proprietary application, and you don't want to
108publicly release the application and/or any data collected from it, then
109alternatively you can provide the necessary application and/or data via e-mail,
110to *jose dot r dot fonseca at gmail dot com*.
111
112If it is not technically/legally feasible for you to provide application and/or
113data at all, then you must be either:
114
115* develop and provide a test application, stripped-down of all
116 proprietary/confidential data, but that can reproduce the issue;
117
118* be willing/able to do the investigation of the issue, namely to identify the
119 root cause of the issue (e.g., which OpenGL call is not properly handled and
120 why), using all necessary tools (such as debuggers).
121
122Failure to do so will render the apitrace authors powerless to address the
123issue.
124
125
José Fonseca2208f5a2015-02-05 12:05:11 +0000126# Attachments #
José Fonseca05ba4192011-09-17 21:18:57 +0100127
128github issue tracker doesn't support attachments.
129
130Please attach long logs to https://gist.github.com/ and paste the URL into the
131issue description.
132
José Fonseca2cca1ad2013-06-14 11:14:06 +0100133For big attachments, such as traces, please upload them temporarily to a web
José Fonseca42545d02015-01-20 14:51:43 +0000134server you control, or use a file upload service such as [Google
135Drive](https://www.google.com/drive/) or [Dropbox](https://dropbox.com/) and
136paste the URL into the issue description.
José Fonseca05ba4192011-09-17 21:18:57 +0100137
138Trace files are only slightly compressed (for performance reasons). You can
139further reduce their size when attaching/uploading by compressing with
140[XZ](http://tukaani.org/xz/) or [7-Zip](http://www.7-zip.org/).
141
142
José Fonseca2208f5a2015-02-05 12:05:11 +0000143# Bugs on tracing #
José Fonseca05ba4192011-09-17 21:18:57 +0100144
145For bugs that happen while tracing (e.g., crashes while tracing the
146application, or incorrect traces) please:
147
148* provide information on how to obtain the application;
149
150* describe how you were using it when the issue happened.
151
152
José Fonseca2208f5a2015-02-05 12:05:11 +0000153# Bugs on retracing/GUI #
José Fonseca05ba4192011-09-17 21:18:57 +0100154
155For bugs on retracing (e.g. crashes when retracing the application,
156incorrect inconsistent rendering, or viewing with the GUI) please:
157
158* provide the trace file;
159
160* describe the results you got, and what results you were expecting.
161
162
José Fonseca2208f5a2015-02-05 12:05:11 +0000163# Obtaining stack back-traces #
José Fonseca05ba4192011-09-17 21:18:57 +0100164
José Fonseca05ba4192011-09-17 21:18:57 +0100165Please rebuild apitrace with debugging information, by passing
José Fonseca5c101c92013-07-12 07:48:22 +0100166`-DCMAKE_BUILD_TYPE=Debug` to cmake, or editing its value in `CMakeCache.txt`
167and rebuilding.
José Fonseca05ba4192011-09-17 21:18:57 +0100168
José Fonseca2208f5a2015-02-05 12:05:11 +0000169## Linux ##
José Fonseca217c55f2015-01-20 15:39:50 +0000170
José Fonseca05ba4192011-09-17 21:18:57 +0100171To obtain a stack back-trace, run the application with gdb from a terminal:
172
173 $ gdb --args application arg1 arg2 ...
174 (gdb) run
175 ...
176 (gdb) bt
José Fonseca217c55f2015-01-20 15:39:50 +0000177 ...
178 (gdb) quit
José Fonseca05ba4192011-09-17 21:18:57 +0100179
José Fonseca217c55f2015-01-20 15:39:50 +0000180To trace an application inside GDB invoke apitrace as:
José Fonseca5c101c92013-07-12 07:48:22 +0100181
José Fonseca5fc6cb72014-05-23 22:15:36 +0100182 apitrace trace --verbose --debug application arg1 ...
José Fonseca05ba4192011-09-17 21:18:57 +0100183
José Fonsecae34099b2011-09-19 09:29:08 +0100184See also more detailed and Distro specific instructions:
185
186* http://wiki.debian.org/HowToGetABacktrace
187
188* https://wiki.ubuntu.com/Backtrace
189
190* http://fedoraproject.org/wiki/StackTraces
191
192* http://live.gnome.org/GettingTraces
193
194
José Fonseca2208f5a2015-02-05 12:05:11 +0000195## Mac OS X ##
José Fonseca217c55f2015-01-20 15:39:50 +0000196
Jose Fonseca733daf72015-01-23 18:24:22 +0000197Before you can debug you must first enable developer mode on the machine if you
198haven't done so before:
199
200 sudo /usr/sbin/DevToolsSecurity --enable
201
José Fonseca217c55f2015-01-20 15:39:50 +0000202To trace an application inside LLDB and obtain a stack backtrace invoke apitrace as:
203
204 $ apitrace trace --verbose --debug application arg1 ...
205 ...
206 (lldb) bt
207 ...
208 (lldb) quit
209
210
José Fonseca2208f5a2015-02-05 12:05:11 +0000211## Windows ##
José Fonseca05ba4192011-09-17 21:18:57 +0100212
José Fonsecaff3abc62011-09-27 10:20:05 +0100213See:
José Fonseca05ba4192011-09-17 21:18:57 +0100214
José Fonseca2208f5a2015-02-05 12:05:11 +0000215* <https://developer.mozilla.org/en/how_to_get_a_stacktrace_with_windbg>