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