| How To Report A Bug | |
| ------------------- | |
| There are two ways for you to make a bug report. One uses a simple perl | |
| script, and is recommended if you don't want to spend a lot of time | |
| producing the report. It is designed for use by just about anyone, from | |
| the newest of newbies to advanced developers. You can also make a bug | |
| report the hard way -- advanced developers will probably prefer this. | |
| A. The Easy Way | |
| 1) Your computer *must* have perl on it for this method to work. To | |
| find out if you have perl, run: | |
| which perl | |
| If it returns something like "/usr/bin/perl", you're in business. | |
| Otherwise, skip on down to "The Hard Way". | |
| If you aren't sure, just keep on going. When you try to run the script, it | |
| will become *very* apparent if you don't have perl. | |
| 2) Change directory to <dirs to wine>/tools | |
| 3) Type in "./bug_report.pl" and follow the directions. | |
| 4) Post a message to the comp.emulators.ms-windows.wine newsgroup with the | |
| "Nice Formatted Report" attatched. If possible, upload the full debug | |
| output to a web/ftp server and provide the address in your message. | |
| B. The Hard Way: | |
| Some simple advice on making your bug report more useful (and thus more | |
| likely to get answered and fixed): | |
| 1) Post as much information as possible. | |
| This means we need more information than a simple | |
| "MS Word crashes whenever I run it. Do you know why?" | |
| Include at least the following information: | |
| - Version of Wine you're using (run 'wine -v') | |
| - Operating system you're using, what distribution (if any), and what | |
| version | |
| - Compiler and version (run 'gcc -v') | |
| - Windows version, if installed | |
| - Program you're trying to run, its version number, and a URL for | |
| where the program can be obtained (if available) | |
| - Command line you used to start wine | |
| - Any other information you think may be relevant or helpful, such as | |
| X server version in case of X problems, libc version etc. | |
| 2) Re-run the program with the -debugmsg +relay option | |
| (i.e., 'wine -debugmsg +relay sol.exe'). | |
| If Wine crashes while running your program, it is important that we | |
| have this information to have a chance at figuring out what is causing | |
| the crash. This can put out quite a lot (several MB) of information, | |
| though, so it's best to output it to a file. When the Wine-dbg> prompt | |
| appears, type 'quit'. | |
| You might want to try +relay,+snoop instead of +relay, but please note | |
| that +snoop is pretty unstable and often will crash earlier than a | |
| simple +relay ! | |
| If this is the case, then please use *only* +relay !! | |
| A bug report with a crash in +snoop code is useless in most cases ! | |
| To get the trace output, use the following commands: | |
| all shells: | |
| echo quit|wine -debugmsg +relay [other_options] program_name >& filename.out; tail -n 100 filename.out > report_file | |
| (This will print wine's debug msgs only to the file and then | |
| auto-quit. It's probably a good idea to use this command, since wine | |
| prints out so many debug msgs that they flood the terminal, eating CPU.) | |
| tcsh and other csh-like shells: | |
| wine -debugmsg +relay [other_options] program_name |& tee filename.out | |
| tail -100 filename.out > report_file | |
| bash and other sh-like shells: | |
| wine -debugmsg +relay [other_options] program_name 2>&1 | tee filename.out | |
| tail -100 filename.out > report_file | |
| 'report_file' will now contain the last hundred lines of the debugging | |
| output, including the register dump and backtrace, which are the most | |
| important pieces of information. Please do not delete this part, even | |
| if you don't understand what it means. | |
| 3) Post your report to the newsgroup comp.emulators.ms-windows.wine | |
| In your post, include all of the information from part 1), and insert | |
| the text from the output file in part 2). If you do this, your chances | |
| of receiving some sort of helpful response should be very good. | |
| 4) Questions and comments | |
| If after reading this document there is something you couldn't figure | |
| out, or think could be explained better, or that should have been | |
| included, please post to comp.emulators.ms-windows.wine to let us know | |
| how this document can be improved. | |
| How to do regression testing using Cvs | |
| ------------------------------------- | |
| A problem that can happen sometimes is 'it used to work before, | |
| now it doesn't anymore...'. Here is a step by step procedure to | |
| try to pinpoint when the problem occured. This is *NOT* for casual | |
| users. | |
| 1) get the 'full cvs' archive from winehq. | |
| This archive is the cvs tree but with the tags controling the versioning | |
| system. It's a big file (> 15 meg) with a name like full-cvs-<last update date> | |
| (it's more than 100mb when uncompressed, you can't very well do this | |
| with small, old computers or slow Internet connections) | |
| 2) untar it into a repository directory : | |
| cd /home/gerard | |
| tar -zxffull-cvs-2000-05-20.tar.gz | |
| mv wine repository | |
| 3) extract a new destination directory | |
| This directory must not be in a subdirectory of the repository else | |
| cvs will think it's part of the repository and deny you an extraction | |
| in the repository : | |
| cd /home/gerard | |
| mv wine wine_current (-> this protects your current wine sandbox, if any) | |
| export CVSROOT=/home/gerard/repository | |
| cd /home/gerard | |
| cvs -d $CVSROOT checkout wine | |
| Note that it's not possible to do a checkout at a given date; you | |
| always do the checkout for the last date where the full-cvs-xxx snapshot | |
| was generated. | |
| 4) you will have now in the ~/wine directory an image of the cvs tree, | |
| on the client side. | |
| Now update this image to the date you want : | |
| cd /home/gerard/wine | |
| cvs -d $CVSROOT update -D "1999-06-01" | |
| The date format is YYYY-MM-DD. | |
| Many messages will inform you that more recent files have been | |
| deleted to set back the client cvs tree to the date you asked, | |
| for example : | |
| cvs update: tsx11/ts_xf86dga2.c is no longer in the repository | |
| Cvs update is not limited to upgrade to a *newer* version as | |
| I have believed for far too long :-( | |
| 5) Now proceed as for a normal update : | |
| ./configure | |
| make depend && make | |
| When you have found the exact date when a bug was | |
| added to Cvs, use something like : | |
| cvs -d $CVSROOT diff -D "1999-07-10" -D "1999-07-12" | |
| to get all the differences between the last cvs version | |
| known to work and code that first displayed the misbehavior. | |
| [ I did not include flags for diff since they are in my .cvsrc file : | |
| cvs -z 3 | |
| update -dPA | |
| diff -u | |
| ] | |
| From this diff file, particularly the file names, and the | |
| ChangeLog, it's usually possible to find the different individual | |
| patches that were done at this time. | |
| If any non-programmer reads this, the fasted method to get | |
| at the point where the problem occured is to use a binary | |
| search, that is, if the problem occured in 1999, start at mid-year, | |
| then is the problem is already here, back to 1st avril, if not, | |
| to 1st october, and so on. | |
| 6) The next step is to start from the last working version | |
| and to dig the individual contributions from | |
| http://www.integrita.com/cgi-local/lwgate.pl/WINE-PATCHES/ | |
| (where the Wine patches mailing list is archived) | |
| If the patch was done by the Wine maintainer or if it was | |
| sent directly to his mail address without going first through | |
| wine-patches, you are out of luck as you will never find the | |
| patch in the archive. | |
| If it is, it's often possible to apply the patches one by | |
| one to last working Cvs, compile and test. If you have saved | |
| the next candidate as /home/gerard/buggedpatch1.txt : | |
| cd /home/gerard/wine | |
| patch -p 0 </home/gerard/buggedpatch1.txt | |
| Beware that the committed patch is not always identical to | |
| the patch that the author sent to wine-patches, as sometimes | |
| the Wine maintainer changes things a bit. | |
| If you find one patch that is getting the Cvs to reproduce the problem, | |
| you have almost won; post the problem on | |
| comp.emulators.windows.wine | |
| and there is a chance that the author will jump in to suggest a fix; | |
| or there is always the possibility to look hard at the patch until it | |
| is coerced to reveal where is the bug :-) |