Wikia

Freeciv

Watchlist Recent changes

Bug Reporting

To report a bug you should use our bug tracking system here. Before submitting a report you should check if the bug has already been reported. Take a look at the list of Known Bugs.

A good bug report should contain:

  • Description of the problem. The easiest bugs to fix are those which developers can reproduce. If it is possible please provide a step by step instruction to trigger a bug.
  • Freeciv version. Please specify how did you download or compiled your copy. If you report a problem in the client please tell us whether you are using gtk2, sdl, xaw, or win32 client type.
  • Information about environment which your copy is run in: OS version, window manager, unusual compiler options, localisation, etc.

After submitting the report you should expect further questions. You may be asked for a savegame or backtrace. Therefore you should keep the savegame for some time.

Contents

Backtrace Edit

A stack backtrace provides very useful information about state of a process. Usually when program crashes, programmers look at the state to investigate a cause of the bug.

To provide a backtrace you can either run the program inside the gdb program or by investigating a core file, which the program may have left on disc after it crashed (see below).

$ gdb freeciv-gtk2
(gdb) run

or

$ gdb freeciv-gtk2 -c core

In first case you have to reproduce a crash, in the second case a state of the program which crashed is already inside the core file. Now you should type

(gdb) bt full

The result will look like this:

#0  0xb78969e7 in raise () from /lib/tls/libc.so.6
#1  0xb789831b in abort () from /lib/tls/libc.so.6
#2  0xb788f885 in __assert_fail () from /lib/tls/libc.so.6
#3  0x08072414 in meswin_thaw () at messagewin_common.c:54
#4  0x0805d31c in reports_thaw () at climisc.c:967
#5  0x0807a718 in handle_thaw_hint () at packhand.c:2701
#6  0x0807aa36 in client_handle_packet (type=PACKET_THAW_HINT,
    packet=0x8bdfb90) at packhand_gen.c:35
#7  0x08059ae8 in handle_packet_input (packet=0x8bdfb90, type=3)
    at civclient.c:390

This is the information we are interested in. If you compile your copy with the '-g' compiler option, the result will contain more useful information.

Getting a core file Edit

On modern Linux, core files are not generated by default when a program crashes, so you may need to run the following command to enable them:

$ ulimit -c unlimited

This should change a crash message like "Segmentation fault" to "Segmentation fault (core dumped)". A file will be created nearby with a name like core or core.12345 which contains debugging information.

It is not generally useful to attach a core file directly to a bug report, as it can't be interpreted without your compiled version of the program; this is why we ask for you to generate the backtrace.

Backtrace on Windows Edit

You need gdb for Windows and the Freeciv binaries with debugging symbols. The necessary files for versions 2.0.9 and 2.1 are available prepackaged from the download server. The zip archives should be extracted into the Freeciv directory and then server and/or client can be loaded into gdb with "gdb civserver.exe" and "gdb civclient.exe".

Backtrace on failed assertion Edit

If you get a message like:

in copy_chars_to_string16() [gui_string.c::196]: assertion 'pString != ((void *)0)' failed

You can start your client or the server with the -F parameter to raise a specific signal on assertion failure. Running with gdb, -F SIGINT (usually 2) is especially useful to interrupt the process you can resume with the continue gdb command.

Pages on Freeciv

Add a Page
566pages on
this wiki

Latest Photos

Add a Photo
572photos on this wiki
See more >

Recent Wiki Activity

See more >

Around Wikia's network

Random Wiki