Change all head/tail -X to head/tail -n X to be more POSIXly
[wine] / documentation / bugs.sgml
1   <chapter id="bugs">
2     <title>Troubleshooting / Reporting bugs</title>
3
4     <sect1 id="troubleshooting">
5       <title>What to do if some program still doesn't work?</title>
6
7       <para>
8       There are times when you've been trying everything, you even killed a cat
9       at full moon and ate it with rotten garlic and foul fish
10       while doing the Devil's Dance, yet nothing helped to make some damn
11       program work on some Wine version.
12       Don't despair, we're here to help you...
13       (in other words: how much do you want to pay ?)
14       </para>
15       
16       <sect2>
17         <title>Run "winecheck" to check your configuration</title>
18
19         <para>
20           Run a Perl script called <command>winecheck</command>.
21           For details, please refer to the <link
22           linkend="config-verify">Configuration section</link>.
23         </para>
24       </sect2>
25
26       <sect2>
27         <title>Use different windows version settings</title>
28
29         <para>
30         In several cases using <link linkend="config-windows-versions">different windows version settings</link> can help.
31         </para>
32       </sect2>
33
34       <sect2>
35         <title>Use different startup paths</title>
36
37         <para>
38           This sometimes helps, too:
39
40           Try to use both
41           <command>wine prg.exe</command>
42           and
43           <command>wine x:\\full\\path\\to\\prg.exe</command>
44         </para>
45       </sect2>
46
47       <sect2>
48         <title>Fiddle with DLL configuration</title>
49
50         <para>
51           Run with --debugmsg +loaddll to figure out which DLLs are
52           being used, and whether they're being loaded as native or
53           built-in.
54           Then make sure you have proper native DLL files in your
55           configured C:\windows\system directory and fiddle with DLL
56           load order settings at command line or in config file.
57         </para>
58       </sect2>
59
60       <sect2>
61         <title>Check your system environment !</title>
62
63         <para>
64           Just an idea: could it be that your Wine build/execution
65           environment is broken ?
66
67           Make sure that there are no problems whatsoever with the
68           packages
69           that Wine depends on (gcc, glibc, X libraries, OpenGL (!), ...)
70
71           E.g. some people have strange failures to find stuff when
72           using "wrong" header files for the "right" libraries !!!
73           (which results in days of debugging to desperately try to find
74           out why that lowlevel function fails in a way that is completely
75           beyond imagination... ARGH !)
76         </para>
77       </sect2>
78
79       <sect2>
80         <title>Use different GUI (Window Manager) modes</title>
81         
82         <para>
83           Instruct Wine via config file to use either desktop mode,
84           managed mode or plain ugly "normal" mode.
85           That can make one hell of a difference, too.
86         </para>
87       </sect2>
88
89       <sect2>
90         <title>Check your app !</title>
91         
92         <para>
93           Maybe your app is using some kind of copy protection ?
94
95           Many copy protections currently don't work on Wine.
96           Some might work in the future, though.
97           (the CD-ROM layer isn't really full-featured yet).
98         </para>
99
100         <para>
101           Go to <ulink
102           url="http://www.gamecopyworld.com">GameCopyWorld</ulink>
103           and try to find a decent crack for your game that gets rid of
104           that ugly copy protection.
105           I hope you do have a legal copy of the program, though... :-)
106         </para>
107       </sect2>
108
109       <sect2>
110         <title>Check your Wine environment !</title>
111         
112         <para>
113           Running with or without a Windows partition can have a
114           dramatic impact.
115
116           Configure Wine to do the opposite of what you used to have.
117
118           Also, install DCOM98 or DCOM95. This can be very beneficial.
119         </para>
120       </sect2>
121
122       <sect2>
123         <title>Reconfigure Wine</title>
124         
125         <para>
126           Sometimes wine installation process changes and new versions of
127           Wine account on these changes.
128           This is especially true if your setup was created long time ago.
129
130           Rename your existing <filename>~/.wine</filename> directory
131           for backup purposes.
132           Use the setup process that's recommended for your Wine distribution
133           to create new configuration.
134           Use information in old <filename>~/.wine</filename>
135           directory as a reference.
136           For source wine distribution to configure Wine run
137           tools/wineinstall script as a user you want to do the configuration
138           for.
139           This is a pretty safe operation. Later you can remove the new
140           <filename>~/.wine</filename> directory and rename your old one back.
141         </para>
142       </sect2>
143
144       <sect2>
145       <title>Check out further information</title>
146       
147       <para>
148         Go to <ulink url="http://groups.google.com">Google Groups</ulink>
149         and check whether some guys are smarter than you ;-)
150         (well, whether they found a solution to the problem, that is)
151
152         Go to <ulink url="http://appdb.codeweavers.com">WineHQ's
153         Application Database</ulink> and check whether
154         someone posted the vital config hint for your app.
155
156         If that doesn't help, then consider going to
157         irc.freenode.net channel #WineHQ, posting to
158         news:comp.emulators.ms-windows.wine or mailing to the wine-users
159         (or maybe sometimes even wine-devel) mailing lists.
160       </para>
161       </sect2>
162
163       <sect2>
164         <title>Debug it!</title>
165
166         <para>
167           Have you used the Search feature of the <ulink
168           url="http://www.winehq.org/fom-meta/cache/19.html">Wine Troubleshooting Guide</ulink> ?? (i.e. are you sure there's no answer ?)
169           If you have, then try
170           <ulink url="http://www.winehq.org/fom-meta/cache/230.html">
171           The Perfect Enduser Wine Debugging Guide</ulink>, and of
172           course don't forget to read the Wine Developers Guide.
173         </para>
174       </sect2>
175         
176     </sect1>
177
178     <sect1 id="bug-reporting">
179       <title>How To Report A Bug</title>
180
181       <para>
182         Please report all bugs along any relevant information to
183         <ulink url="http://bugs.winehq.com/">Wine Bugzilla</ulink>.
184         Please, search the Bugzilla database to check whether your problem
185         is already reported. If it is already reported please add
186         any relevant information to the original bug report.
187       </para>
188
189       <sect2>
190         <title>All Bug Reports</title>
191         <para>
192           Some simple advice on making your bug report more useful
193           (and thus more likely to get answered and fixed):
194         </para>
195         <orderedlist>
196           <listitem>
197           <para>
198             Post as much relevant information as possible.
199           </para>
200           <para>
201             This means we need more information than a simple "MS
202             Word crashes whenever I run it.  Do you know why?"
203             Include at least the following information:
204           </para>
205           <itemizedlist spacing="compact">
206             <listitem>
207             <para>
208               Which version of Wine you're using (run <command>wine -v</command>)
209             </para>
210             </listitem>
211             <listitem>
212             <para>
213               The name of the Operating system you're using, what distribution (if
214               any), and what version. (i.e., Linux Red Hat 7.2)
215             </para>
216             </listitem>
217             <listitem>
218             <para>
219               Which compiler and version, (run <command>gcc -v</command>).
220               If you didn't compile wine then the name of the package and
221               where you got it from.
222             </para>
223             </listitem>
224             <listitem>
225             <para>
226               Windows version, if used with Wine.
227               Mention if you don't use Windows.
228             </para>
229             </listitem>
230             <listitem>
231             <para>
232               The name of the program you're trying to run, its version number,
233               and a URL for where the program can be obtained (if
234               available).
235             </para>
236             </listitem>
237             <listitem>
238             <para>
239               The exact command line you used to start wine. 
240               (i.e., <command>wine "C:\Program Files\Test\program.exe"</command>).
241              </para>
242             </listitem>
243             <listitem>
244             <para>
245               The exact steps required to reproduce the bug.
246             </para>
247             </listitem>
248             <listitem>
249             <para>
250               Any other information you think may be relevant or
251               helpful, such as X server version in case of X
252               problems, libc version etc.
253             </para>
254             </listitem>
255           </itemizedlist>
256           </listitem>
257           <listitem>
258           <para>
259             Re-run the program with the <parameter>--debugmsg
260             +relay</parameter> option (i.e., <command>wine
261             --debugmsg +relay sol.exe</command>).
262           </para>
263           <para>
264             This will output additional information at the console 
265             that may be helpful in debugging the program. It also
266             slows the execution of program. There are some cases where 
267             the bug seems to disappear when <parameter> +relay 
268             </parameter> is used. Please mention that in the bug report.
269           </para>
270           </listitem>
271         </orderedlist>
272       </sect2>
273       <sect2>
274         <title>Crashes</title>
275         <para>
276            If Wine crashes while running your program, it is
277            important that we have this information to have a chance
278            at figuring out what is causing the crash.  This can put
279            out quite a lot (several MB) of information, though, so
280            it's best to output it to a file.  When the <prompt>Wine-dbg></prompt>
281            prompt appears, type <userinput>quit</userinput>.
282         </para>
283         <para>
284            You might want to try
285            <parameter>+relay,+snoop</parameter> instead of
286            <parameter>+relay</parameter>, but please note that
287            <parameter>+snoop</parameter> is pretty unstable and
288            often will crash earlier than a simple
289            <parameter>+relay</parameter>! If this is the case, then
290            please use <emphasis>only</emphasis> <parameter>+relay</parameter>!!
291            A bug report with a crash in <parameter>+snoop</parameter>
292            code is useless in most cases!
293            You can also turn on other parameters, depending on the nature
294            of the problem you are researching. See wine man page for full list
295            of the parameters.
296          </para>
297          <para>
298            To get the trace output, use one of the following methods:
299          </para>
300          <sect3>
301            <title>The Easy Way</title>
302            <orderedlist>
303              <listitem>
304              <para>
305                This method is meant to allow even a total novice to
306                submit a relevant trace log in the event of a crash.
307              </para>
308              <para>
309                Your computer <emphasis>must</emphasis> have perl on it
310                for this method to work. To find out if you have perl,
311                run <command>which perl</command>. If it returns something like
312                <filename>/usr/bin/perl</filename>, you're in business.
313                Otherwise, skip on down to "The Hard Way". If you aren't
314                sure, just keep on going. When you try to run the
315                script, it will become <emphasis>very</emphasis> apparent
316                if you don't have perl.
317              </para>
318              </listitem>
319              <listitem>
320              <para>
321                Change directory to <filename>&lt;dirs to wine>/tools</filename>
322              </para>
323              </listitem>
324              <listitem>
325              <para>
326                Type in <command>./bug_report.pl</command> and follow
327                the directions.
328              </para>
329              </listitem>
330              <listitem>
331              <para>
332                Post the bug to
333                <ulink url="http://bugs.winehq.com/">Wine Bugzilla</ulink>.
334                Please, search Bugzilla database to check whether your problem is
335                already found before posting a bug report.
336                Include your own detailed description of the problem with
337                relevant information. Attach the "Nice Formatted Report"
338                to the submitted bug. Do not cut and paste the report
339                in the bug description - it is pretty big.
340                Keep the full debug output in case it will be needed by
341                Wine developers.
342              </para>
343              </listitem>
344            </orderedlist>
345          </sect3>
346          <sect3>
347            <title>The Hard Way</title>
348            <para>
349              It is likely that only the last 100 or so lines of the
350              trace are necessary to find out where the program crashes. 
351              In order to get those last 100 lines we need to do the following
352            </para>
353            <orderedlist>
354              <listitem>
355              <para>
356                Redirect all the output of <parameter> -debugmsg </parameter>
357                to a file.
358              </para>
359              </listitem>
360              <listitem>
361              <para>
362                Separate the last 100 lines to another file using
363                <command>tail</command>.
364              </para>
365              </listitem>
366            </orderedlist>
367            <para>
368              This can be done using one of the following methods.
369            </para>
370            <variablelist>
371              <varlistentry>
372              <term>all shells:</term>
373              <listitem>
374              <screen>
375 <prompt>$ </prompt>echo quit | wine -debugmsg +relay [other_options] program_name >& filename.out;
376 <prompt>$ </prompt>tail -n 100 filename.out > report_file
377              </screen>
378              <para>
379                (This will print wine's debug messages only to the file 
380                and then auto-quit. It's probably a good idea to use this 
381                command, since wine prints out so many debug msgs that 
382                they flood the terminal, eating CPU cycles.)
383              </para>
384              </listitem>
385              </varlistentry>
386              <varlistentry>
387              <term>tcsh and other csh-like shells:</term>
388              <listitem>
389              <screen>
390 <prompt>$ </prompt>wine -debugmsg +relay [other_options] program_name |& tee filename.out;
391 <prompt>$ </prompt>tail -n 100 filename.out > report_file
392              </screen>
393              </listitem>
394              </varlistentry>
395              <varlistentry>
396              <term>bash and other sh-like shells:</term>
397              <listitem>
398              <screen>
399 <prompt>$ </prompt>wine -debugmsg +relay [other_options] program_name 2>&1 | tee filename.out;
400 <prompt>$ </prompt>tail -n 100 filename.out > report_file
401              </screen>
402              </listitem>
403              </varlistentry>
404           </variablelist>
405           <para>
406             <filename>report_file</filename> will now contain the
407             last hundred lines of the debugging output, including
408             the register dump and backtrace, which are the most
409             important pieces of information.  Please do not delete
410             this part, even if you don't understand what it means.
411           </para>
412           <para>
413             Post the bug to 
414             <ulink url="http://bugs.winehq.com/">Wine Bugzilla</ulink>.
415             You need to attach the output file <filename>report_file</filename>
416             from part 2). Along with the the relevant information 
417             used to create it. Do not cut and paste the report
418             in the bug description - it is pretty big and it will
419             make a mess of the bug report.
420             If you do this, your chances of receiving some sort of
421             helpful response should be very good.
422           </para>
423           <para>
424             Please, search the Bugzilla database to check whether your problem
425             is already reported. If it is already reported attach the
426             output file <filename>report_file</filename> to the original
427             bug report and add any other relevant information.
428           </para>
429         </sect3>
430       </sect2>
431     </sect1>
432  </chapter>
433
434 <!-- Keep this comment at the end of the file
435 Local variables:
436 mode: sgml
437 sgml-parent-document:("wine-user.sgml" "set" "book" "chapter" "")
438 End:
439 -->